在单元测试python中出现故障步骤时运行测试用例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在单元测试python中出现故障步骤时运行测试用例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2942字,纯文字阅读大概需要5分钟。
内容图文
我在Python中有一个testSuite,有几个使用单元测试框架的测试用例.我正在使用进口单元测试
如果测试用例中的测试步骤失败,则测试用例将进入拆解类.即使一个测试用例失败,我还想继续测试用例的其余部分.
单元测试的默认行为:如果任何测试步骤失败,它将拆除类并结束测试用例.
测试步骤:我的意思是断言相等并且像这个内置的proc,它定义了它是失败还是通过
解决方法:
考虑到你有这样的事情:
class TestFoo(unittest.TestCase):
def test_case_1(self):
self.assertEqual(1, 2)
self.assertEqual(1, 3)
self.assertEqual(1, 1)
第一个断言将失败,并且以下的断言将不会运行但测试将结束并且将调用self.tearDown方法.
当你断言你的意思是条件是强有力的,或者继续没有意义.你的意思是:“如果一个人不等于二,那么生活就再也没有意义……”:)
大多数情况都是如此.例如,如果结果代码不是预期的结果代码,则不希望检查其余API的结果体.
你应该在一步中测试所有的平等,以确保它们都将被检查.您可以将它们分组为元组,例如:
class TestFoo(unittest.TestCase):
def test_case_1(self):
self.assertEqual((1, 1, 1), (2, 3, 1))
然后你会得到这样的输出:
AssertionError: Tuples differ: (1, 1, 1) != (2, 3, 1)
First differing element 0:
1
2
- (1, 1, 1)
? ^ ^
+ (2, 3, 1)
? ^ ^
从python文档:
assertEqual(first, second, msg=None)
Test that first and second are equal. If the values do not compare equal,
the test will fail.In addition, if first and second are the exact same type and one of
list, tuple, dict, set, frozenset or str or any type that a subclass
registers with addTypeEqualityFunc() the type-specific equality
function will be called in order to generate a more useful default
error message (see also the list of type-specific methods).
https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertEqual
https://docs.python.org/3.6/library/unittest.html#unittest.TestCase.assertEqual
[编辑] – 经过一些关于这个问题的澄清评论本身但没有代码示例.
考虑到你有不同的东西,像这样:
class TestBar(unittest.TestCase):
def test_rest_api_foo(self):
r = request("http://dummyurl")
self.assertEqual(r.status_code, 200)
self.assertEqual(r.text, "hello world")
你可以做许多(hacky)事情,比如计算失败,而不是在最后断言和断言计数器值:
class TestBar(unittest.TestCase):
def test_rest_api_foo(self):
r = request("http://dummyurl")
errors = (r.status_code != 200)
errors += (r.text != "hello world")
self.assertEqual(errors, 0)
或者创建一个辅助函数来断言,记录,计数和吞下异常,然后在结尾处断言计数器.有很多种可能性.
但是,一般来说,最好的(最简单,最清楚,最无聊的)方式将是评论中已经建议的方式:
class TestBar(unittest.TestCase):
def test_rest_api_status_code_foo(self):
r = request("http://dummyurl")
self.assertEqual(r.status_code, 200)
def test_rest_api_text_foo(self):
r = request("http://dummyurl")
self.assertEqual(r.text, "hello world")
请注意,在此特定示例中,单个测试用例会更好.
无论如何,这将为您提供单独的错误消息,同时保持代码简单易维护.
如果您的问题是因为在每个测试用例之后调用tearDown方法,那么您可以使用tearDownClass进行清理(python3或来自unittest2).
我确信我没有在这里覆盖你实际问题的所有可能性,但也许这对于展示你的未解决问题有多少可能性是有用的.所以,请澄清你的问题.
内容总结
以上是互联网集市为您收集整理的在单元测试python中出现故障步骤时运行测试用例全部内容,希望文章能够帮你解决在单元测试python中出现故障步骤时运行测试用例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。