Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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
我是一名php程序员,正在转换为python。请解释单元测试的重要性(或非重要性)。我从来没有用php进行过单元测试!_Php_Python_Unit Testing_Pyramid_Nose - Fatal编程技术网

我是一名php程序员,正在转换为python。请解释单元测试的重要性(或非重要性)。我从来没有用php进行过单元测试!

我是一名php程序员,正在转换为python。请解释单元测试的重要性(或非重要性)。我从来没有用php进行过单元测试!,php,python,unit-testing,pyramid,nose,Php,Python,Unit Testing,Pyramid,Nose,我正在学习坚实的软件开发,我意识到“以光速踏上奖牌代码,祈祷没有真正计划的好结果”的方法是行不通的 我正在寻求用坚实的实践来取代我的旧方法(当然也不是很好)。我以前从未使用过单元测试,现在在尝试学习pyramid(由于完整的文档,它进展顺利)的基础上,我还尝试了解单元测试对我有什么好处(将来还将添加集成测试、回归测试等)。我读了这篇介绍nosetest的文章,我发现可以使用单元测试来测试正则表达式,如果a=1,请参见;b=1;现在做a==b。这就是我在这一点上所能看到的一切。我不需要这方面的框架

我正在学习坚实的软件开发,我意识到“以光速踏上奖牌代码,祈祷没有真正计划的好结果”的方法是行不通的

我正在寻求用坚实的实践来取代我的旧方法(当然也不是很好)。我以前从未使用过单元测试,现在在尝试学习pyramid(由于完整的文档,它进展顺利)的基础上,我还尝试了解单元测试对我有什么好处(将来还将添加集成测试、回归测试等)。我读了这篇介绍nosetest的文章,我发现可以使用单元测试来测试正则表达式,如果a=1,请参见
;b=1;现在做a==b
。这就是我在这一点上所能看到的一切。我不需要这方面的框架。我可以用正则表达式测试仪,用常识来“测试”。如果我要使用单元测试来查看两个变量是否相等,那么我不是每次创建变量并将其设置为相等时都要创建一个测试吗?文章中的例子似乎有点武断

我对学习单元测试的好处持开放态度,但我想知道单元测试的一些实际应用是什么

底线:我以前从未使用过单元测试,所以请告诉我为什么我错了,并且应该开始使用测试


干杯

单元测试为您的代码满足您的期望提供了一些确定性。单元测试不是圣杯,它只是一种工具,您可以使用它来实现代码的高精度和模块化

单元测试是您的期望。换句话说,您的测试将调用或调用正在测试的代码段,然后根据您预期的结果(或返回的结果)度量结果(返回值等)。如果结果与您期望的不匹配,那么您要么得到了一个错误的测试(您的期望是错误的),要么测试中的代码没有按照您的想法运行

当需要重构或维护代码时,单元测试尤其有用。您可以更改代码,运行单元测试,并检查您的更改是否破坏了测试

为了保持简洁,单元测试还有其他好处。通常情况下,您应该能够以自动化的方式运行它们,这样,如果您每晚进行构建,就可以让它们运行,然后您可以在早上检查结果。当多人可以更改或添加代码时,这在大型团队中尤其有用。 以适合单元测试的方式构建代码也会在构建应用程序时带来更多的解耦方法,这会减少代码气味,并有助于未来的可维护性和可扩展性

编辑: 有了测试,我就可以在测试用例中硬编码了。例如,我是否会手动将user5作为参数传递(user5已登录400次),并确保他们没有获得徽章,但user6(500次登录)确实获得徽章

是的,那正是你要做的。这意味着,如果您更改了
did_earn
的内部实现,那么您的测试可以立即告诉您它是否仍然满足您的期望(从500次登录开始,它只返回true)。如果您正在测试不是强类型化的代码(像脚本语言),那么您也应该考虑测试,如果将字符串传递给函数而不是整数,那么,

会发生什么。
虽然它目前可能不适用于您,但您还应该检查和的概念,这些都是单元测试中大量使用的技术。

谢谢您的回答。那么,当你说“期望”和“结果”时,你是什么意思?假设我们有一个用户徽章对象,当用户第500次登录到我的服务时,他们会得到一个“常客”徽章。假设徽章对象负责检查用户是否已获得该徽章。所以我的逻辑告诉我对did_earn函数进行测试。有了测试,我就可以在测试用例中硬编码了。例如,我是否会手动将user5作为参数传递(user5已登录400次),并确保他们没有获得徽章,但user6(500次登录)确实获得徽章?嘿,Slugster。我现在正在读。非常感谢你的帮助。你正在帮助把事情弄清楚。