Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有django应用程序的模拟框架?写一篇文章的好做法是什么?_Python_Django_Testing_Statistics_Simulation - Fatal编程技术网

Python 是否有django应用程序的模拟框架?写一篇文章的好做法是什么?

Python 是否有django应用程序的模拟框架?写一篇文章的好做法是什么?,python,django,testing,statistics,simulation,Python,Django,Testing,Statistics,Simulation,所以,我有个主意 假设您有一个经典的应用程序,它由几个类的用户和他们处理的一些数据组成。假设是乘客、司机和调度员(比如出租车)。乘客创建命令,调度员向司机分配命令,司机执行命令,乘客撰写关于司机的评论,调度员在其调度方案中使用这些评论,等等 假设你有这样一个系统,包括几十名调度员、几百名司机和数千名乘客 随着时间的推移,新的调度员被雇佣,其中一些被解雇,司机来来往往,而且一如既往,还有忠诚的客户和新客户 所以,我的问题是-如何模拟这样的系统?我希望有一个工具,允许我使用当前的django应用程序

所以,我有个主意

假设您有一个经典的应用程序,它由几个类的用户和他们处理的一些数据组成。假设是乘客、司机和调度员(比如出租车)。乘客创建命令,调度员向司机分配命令,司机执行命令,乘客撰写关于司机的评论,调度员在其调度方案中使用这些评论,等等

假设你有这样一个系统,包括几十名调度员、几百名司机和数千名乘客

随着时间的推移,新的调度员被雇佣,其中一些被解雇,司机来来往往,而且一如既往,还有忠诚的客户和新客户

所以,我的问题是-如何模拟这样的系统?我希望有一个工具,允许我使用当前的django应用程序、其模型和方法,并用不同模式创建的用户、数据和操作填充它

我把它看作是一个独立的框架(类似于unittest框架和数据生成框架),可以将自己连接到任何应用程序,为用户描述模式,然后以连续的方式运行它

这可能有助于:

  • 更好的产品逻辑测试
  • 模拟现实生活实验(“如果有司机,他下了很多订单怎么办”)
  • 更智能的负载测试系统(真正测试现实生活场景,包括“whatif”情况)
  • 创建逼真的数据以测试统计软件

是否存在任何预先存在的解决方案?如果我决定创建一个,您有什么建议吗?

对于通用解决方案,您有一个非常具体的任务。我认为,您必须使用任何数据生成器(例如,),任务队列(,rabbitmq)并编写自定义后端


这个问题没有普遍的答案。

为什么不在单元测试框架内这样做呢?因为单元测试是非持久性的。“模拟”意味着持续运行,保存正在创建的数据,并监控系统的发展。例如,经过一段时间的模拟(当然是加快了),您可能会看到,数据库大小(或SQL查询计数)呈指数增长,并考虑优化。对于Django应用程序来说,这是处理真实世界实体的一个很好的问题。我希望做一些非常类似的事情。我看到你在这里没有选择的答案-你有过这样的经历吗?我对你学到的东西感兴趣。不,我没有。我仍然认为这是一个好主意。回顾我在那个项目(这是一个相当大的现实世界系统)中的经验,拥有这样的游乐场是非常有用的。这个问题可能并没有通用的解决方案,但它有一些通用的方面。例如,每个特定的模拟案例都有重复率。在每个模拟系统中,所有者都希望看到系统如何随时间的推移使用这组特定的常数增长(或收缩)(以及增长模式如何随常数的变化而变化)。在每个模拟中,您都希望测量负载(以及当您更改系统时负载如何变化)。基本上,我的想法是关于系统的黑盒式测试,在这种测试中,您可以编写描述接近真实情况的测试,并查看它对您的系统的影响。基本上,数据并不重要。重要的是过程。因此,数据生成器几乎无关紧要。所需要的是一些抽象层,它允许您描述您的应用程序模型工作流、它们是如何注册的、它们是如何更改的、它们是如何(及时)操作的。此外,我梦想的这个框架有助于描述不同的角色,如懒虫司机、VeryGoodDriver、AverageDriver(或不良行为乘客),并让我改变它们的比例。它甚至可以通过现有的django视图模拟它们的操作。