python unit test案例执行顺序_pycharm解决unittest中用addTest方法改变用例执行顺序不生效的问题...

记录测试用遇到的一个小问题~~~

#前情提要

在unittest 中,默认的用例执行顺序是按照 TestCaseName 的 ASCII 码顺序来执行,也即是0 ~ 9、A ~ Z、a ~ z。

举个栗子:

import unittest

class TestAddTest(unittest.TestCase):

@classmethod

def setUpClass(cls):

print("@@@ setUpClass @@@")

@classmethod

def tearDownClass(cls):

print("@@@ setUpClass @@@")

def setUp(self):

print("---setUp---")

def tearDown(self):

print("---tearDown---")

#case

def test_one(self):

print("* 第 1 个用例 *")

def test_TWO(self):

print("* 第 2 个用例 *")

def test_three(self):

print("* 第 3 个用例 *")

if __name__ == '__main__':

unittest.main()

运行结果:

3a8c4bb0efd088c1c46891dc4b319c00.png

可以看到这三个用例的执行顺序是 2-1-3,是按照各自的用例名称 TWO、one、three 的 ASCII 码顺序执行的。

但是有些情况下,想要用例按照自己期望的顺序来执行,可以考虑以下方法:

1.修改用例名称,名称前加数字或顺序字母(加在test之后!否则就不是用例了)

2.使用 TestSuite 类的 addTest() 方法

3.其它我不知道的小妙招 ~

我不太喜欢修改用例名称,因为……丑……

所以就考虑用 addTest() 来修改用例执行顺序,调用addTest()方法后,先添加的先执行,后添加的后执行。

然后我……:

import unittest

class TestAddTest(unittest.TestCase):

#去掉setUpClass()和tearDownClass()只是为了省点地方

def setUp(self):

print("---setUp---")

def tearDown(self):

print("---tearDown---")

#case

def test_one(self):

print("* 第 1 个用例 *")

def test_TWO(self):

print("* 第 2 个用例 *")

def test_three(self):

print("* 第 3 个用例 *")

if __name__ == '__main__':

suite = unittest.TestSuite()

suite.addTest(TestAddTest("test_one"))

suite.addTest(TestAddTest("test_TWO"))

suite.addTest(TestAddTest("test_three"))

unittest.TextTestRunner().run(suite)

运行结果还是……2-1-3:

d1a2459b1d29899c87ebff5f22587b32.png

这里 addTest() 方法没有起到作用,还是按照原来的顺序执行了。原因是:在pycharm中,引入了unittest 模块,会默认按照 unittest 模式执行。需要将 unittest 模式转换成普通模式。

unittest模式转换成普通模式的方法:

pycharm上方工具条里找到执行脚本的名称,点击展开后点击编辑配置 Edit Configurations。

(其实注意一下可以看到这个小框里面的名称是Unittests in test-addtest.py,这个就是addTest方法未生效的原因)

f46f75ea90907616ae2c15967a8287d1.png

配置窗口左上角,点击+新增一个python的新配置。

45e616874dd67d3ced2a710fa2974f11.png

给这个配置命名,选择要执行的文件,之后应用、保存。

f0101abb15268416160f3421c0efc716.png

这个时候注意看下右上角这个小框框里面就有了一个刚刚自己新增的 “test_AddTest” 这样的名称,点击运行,或者中间右键选择 Run ‘test_AddTest’ 运行也可以。

e074850631c0436ed946388cc2383fa7.png

现在再看运行结果,就是按照自己addTest()方法添加的顺序来执行用例的了~

83fb574c8cf9c468b562dc448b4f8c72.png

执行的模式也变成普通模式了,不是 unittest 模式了(其实还是喜欢 unittest 模式中可以看到一共执行和通过几个用例的感觉)

不过addTest方法还有一个优点就是可以选择部分用例单独执行,添加几条,就执行几条,还阔以吧~

3bc95ebb31e2f83871de52d3be921396.png

撒花❀✿❀ヽ(°▽°)ノ❀✿❀

(有没有发现今天的花花升级了~)

原文链接:https://blog.csdn.net/sinat_34937826/article/details/108147722

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值