python+unittest接口自动化执行多条测试用例怎么实现?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+unittest接口自动化执行多条测试用例怎么实现?相关的知识,希望对你有一定的参考价值。
目前我想用python+unittest框架来做接口自动化,但是我一个登录模块写了20条用例,难道写测试用例时需要写test开头的脚本20条么,因为这20条用例的都是同类型的用例,有没有方法可以在unittest框架中直接遍历这20条用例,产生20个测试结果,代码应该怎么实现。或者有其它什么框架或代码可以实现。
我的理解是,如果都在一个class里面,确实是需要 def test_xxx 20个的,也可以直接把所有的用例写到一个def test_xx里面的,如果前面的操作步骤一样的话,这两个的差距不大的 参考技术A 参数动态化,可以使用ddt,参考一下ddtpython接口自动化8-unittest框架使用
前言
unittest:Python单元测试框架,基于Erich Gamma的JUnit和Kent Beck的sSmalltalk测试框架。
一、unittest框架基本使用
unittest需要注意的是:①类,继承单元测试unittest 的 TestCase类;②测试用例必须以test开头。学会基本前后置灵活运用以及断言即可。
1、setUp:每个用例“前”都执行 1 次、tearDown:每个用例“后”都执行 1 次、test开头的用例。
setUp、tearDown既是每次用例都执行的前后置。
from unittest import TestCase # class 继承:TestCase class Test_Login(TestCase): def setUp(self): print(\'每个用例“前”都执行 1 次\') def tearDown(self): print(\'每个用例“后”都执行 1 次\') # 以下是用例,需已 test 开头,用例可以写多个。 def test_001(self): print(\'我是用例:case_01\') def test_002(self): print(\'我是用例:case_02\')
2、setUpClass:只执行一次前置;tearDownClass:只执行一次后置。
需使用修饰符:@classmethod,且函数括号用:cls
from unittest import TestCase # class 继承:TestCase class Test_Login(TestCase): # 需使用修饰符:@classmethod,且函数用:cls @classmethod def setUpClass(cls): print(\'全部用例“前”只 执行 1 次\') @classmethod def tearDownClass(cls): print(\'全部用例“后”只 执行 1 次\') def setUp(self): print(\'每个用例“前”都执行 1 次\') def tearDown(self): print(\'每个用例“后”都执行 1 次\') # 以下是用例,需已 test 开头,用例可以写多个。 def test_001(self): print(\'我是用例:case_01\') def test_002(self): print(\'我是用例:case_02\')
3、常用的两种断言方法(基本能供日常使用,不够自己去翻TestCase源码,如图二)
①两值相等:assertEqual(a , b)
②A值在B值里面:assertIn(A, B, msg) ;msg自己想写啥就写啥,类似出现错误后备注:断言失败返回控制台日志,等等
from unittest import TestCase # class 继承:TestCase class Test_Login(TestCase): def setUp(self): print(\'每个用例“前”都执行 1 次\') def tearDown(self): print(\'每个用例“后”都执行 1 次\') # 以下是用例,需已 test 开头,用例可以写多个。 def test_001(self): print(\'我是用例:case_01\') self.assertEqual((1+2), 3) # 断言两个值相等 def test_002(self): print(\'我是用例:case_02\') res = \'广深\' # 假如这是实际结果 self.assertIn(\'小龙\', res, msg=\'他说没有小龙\') # 断言 小龙 在 res 中,如果不在msg是返回值 self.assertTrue(res == \'广深\') # 断言两个值相等(也可以False,断言==、!=、in)
注意:不要执行用例去调用用例,用例是相互独立的,执行用例的顺序按照assic码:0-9 ,A-Z, a-z。欢迎来QQ交流群:482713805
以上是关于python+unittest接口自动化执行多条测试用例怎么实现?的主要内容,如果未能解决你的问题,请参考以下文章
python+appium+unittest 启动一次app,执行多条test