首页 / 知识
关于python:测试GUI代码:我应该使用模拟库吗?
2023-04-16 08:39:00

Testing GUI code: should I use a mocking library?最近,我在用Python开发GUI应用程序时一直在尝试TDD。我感到非常放心的是,有一些测试可以验证我的代码的功能,但是遵循一些推荐的TDD做法是很棘手的。即,首先编写测试非常困难。而且我发现很难使我的测试更具可读性(由于广泛使用了模拟库)。 我选择了一个名为mocker的模拟库。我经常使用它,因为我正在测试的许多代码都调用了(a)我的应用程序中依赖于系统状态的其他方法,或者(b)没有事件循环就无法存在的ObjC / Cocoa对象。<铅> 无论如何,我有很多看起来像这样的测试:
请注意,这实际上是三个测试;都使用相同的参数化测试功能。这是正在测试的代码:
我注意到使用模拟程序的一件事是,首先编写应用程序代码然后再返回然后编写测试更加容易,因为大多数时候我都在模拟许多方法调用和编写模拟调用的语法比应用程序代码更为冗长(因此更难编写)。编写应用程序代码然后从中建模测试代码更加容易。 我发现使用这种测试方法(需要一点纪律),我可以轻松地编写覆盖率达到100%的代码。 我想知道这些测试是否很好?当我终于发现编写好的测试的秘诀时,我会后悔这样做吗? 我是否违反了TDD的核心原则,以至于我的测试徒劳无功? 如果您在编写代码并通过测试之后再编写测试,则说明您没有在进行TDD(也没有获得"测试优先"或"测试驱动"开发的任何好处。关于TDD的权威书籍)
当然,它更容易,因为您只是通过使用特定类型的笔刷将天空变成橙色后才测试天空是否为橙色。 关键是:
在重构代码(即完全重写或移动模块)时,单元测试非常有用。只要在进行大的更改之前先进行单元测试,就可以确信自己在完成操作后不会忘记移动或包含某些内容。 请记住,TDD不是万能药。很难,应该很难,而且"提前"编写模拟测试尤其困难。 所以我想说-做对您有用的事。即使它不是"认证的TDD"。我基本上做同样的事情。 您可能希望提供自己的GUI API,该API位于控制器代码和GUI库代码之间。这可能更容易模拟,或者甚至可以向其中添加一些测试钩子。 最后但并非最不重要的一点是,您的代码对我来说似乎不太可读。使用模拟的代码通常更难理解。幸运的是,在Python中,模拟比其他任何一种语言都更加轻松和简洁。 |
最新内容
相关内容
linux命令软件测试?
linux命令软件测试?,电脑,软件,工具,信息,系统,人员,检测,网络,管理,基础,数据库和linux区别1、中大型的数据库,都支持跨操作系统。因此,在功能linux测试性能命令?
linux测试性能命令?,系统,网络,信息,工具,状态,地址,指标,情况,分析,下行,五个Linux简单命令帮你解决系统性能问题VMSTAT命令擅长用来查询CPUlinux中测试网络命令?
linux中测试网络命令?,网络,系统,管理,工作,命令,基础,信息,网址,网站,情况,Linux下必须知道的11个网络命令netstat -r:打印路由表。路由表保存linux综合测试命令?
linux综合测试命令?,工作,系统,网络,信息,电脑,命令,目录,地址,管理,标准,linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录linux测试dns命令?
linux测试dns命令?,系统,网络,地址,服务,客服,环境,状态,基础,管理,命令,linux配置dns服务器配置命令网卡设置配置文件里面DNS服务器地址设置,测试linux常用命令?
测试linux常用命令?,工作,地址,系统,信息,命令,目录,情况,标准,功能,控制台,linux文件系统常用命令其中一些常用的命令包括ls、cd、pwd和mkdir测试linux常用命令?
测试linux常用命令?,工作,地址,系统,信息,命令,目录,情况,标准,功能,控制台,linux文件系统常用命令其中一些常用的命令包括ls、cd、pwd和mkdirlinux模拟请求命令?
linux模拟请求命令?,地址,工作,系统,工具,信息,标准,命令,目录,发行,数据,linux怎么加端口url请求在/etc/services中添加端口以及对应进程名及linux命令测试客户端?
linux命令测试客户端?,地址,系统,网络,工具,工作,分析,环境,命令,下行,资料,linux测试网速的工具1、speedtest-cli是一个用Python编写的轻量级linux命令书籍推荐?
linux命令书籍推荐?,基础,系统,分析,增速,技术,风险投资,网站,网上,最新,中国经济,linux入门书籍推荐推荐书籍:《TheCProgrammingLanguage》这linux测试url命令?
linux测试url命令?,系统,网络,地址,基础,分析,工作,命令,实战,管理,认证,如何使用linux命令打开网页?在命令符界面浏览网页可以使用lynx,links,百度linux命令推荐?
百度linux命令推荐?,地址,工作,系统,百度,命令,工具,设备,数据,信息,发行,Linux命令大全1、linux常用命令有pwd命令、cd命令、ls命令、cat命令