多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

python + unittest接口自动化测试

更新时间:2021-10-22 02:34:18 作者:admin 浏览:308

python + unittest接口自动化测试

  一 、unittest库

  unittest库是python的内置库,用来对程序进行测试。

  组成部分

  名称

  用途

  1.TestCase

  测试用例,执行测试时依次调用setUp(),测试用例内部方法,tearDown()

  2.TestSuite

  测试用例的集合,可以通过addTest()来添加,顺序执行内部各个测试用例

  3.TestRunner

  运行测试,可以执行TestCase和TestSuite

  4.TestFixture

  测试过程前的环境准备和后的清理,最常用的是setUp()和tearDown()

python + unittest接口自动化测试

  二、使用方法

  1.首先要导入unittest模块,再新建一个继承unittest.TestCase的测试类,测试用例用类方法的形式编写,注意命名必须以test开头。

  例:

  import unittest?class TestXXX(unittest.TestCase):? def test_xxx(self):? pass

  2.测试环境准备

  需要准备和清理测试环境时,要用到setUp()和tearDown(),还有setUpClass()和tearDownClass()。

  例:

  import unittestclass TestXXX(unittest.TestCase): def setUpClass(self): pass # prepare environment for all tests def tearDownClass(self): pass # clear environment for all tests def setUp(self): pass # prepare environment for each test def tearDown(self): pass # clear environment for the test def test_xxx(self):

  setUp()和tearDown()会在每个测试用例执行前后各执行一遍,而setUpClass()和tearDownClass()只会执行一次,分别在整个测试流程开始和结束时。

  3.执行测试

  if __name__ == '__main__':? unittest.main()

  这是最简单的执行测试的方法,会执行所有的测试用例。

  TestSuite的使用

  在测试类中我们可能定义多个测试用例,但是执行时他们不会按照定义时的顺序执行,而是按照方法名的顺序,可能不是我们想要的情况。这时就要用到TestSuite来限制执行的顺序。它还能用来选择执行哪些测试用例。

  if __name__ == '__main__':? suite = unittest.TestSuite()? tests = [? TestXXX('test_xxx'),? TestXXX('test_yyy'),? TestXXX('test_zzz')? ]? suite.addTests(tests)? runner = unittest.TextTestRunner(verbosity=2)? runner.run(suite)

  这样我们就可以限定执行哪些测试,以什么顺序执行。还可以用addTest()添加测试用例。这里还用到了TestRunner,其中的verbosity参数表示展示测试结果的详细程度,0最简略,2最详细。

  4.跳过某些测试用例

  如果我们希望在特定条件下跳过或执行某个测试用例,unittest提供了一些跳过测试用例的方法。

  方法:@unittest.skip(reason)强制跳过,reason是跳过原因@unittest.skipIf(condition, reason)condition为True的时候跳过@unittest.skipUnless(condition, reason)condition为False的时候跳过@unittest.expectedFailure如果test失败了,这个test不计入失败的case数目用法:import unittestclass TestXXX(unittest.TestCase): @classmethod def setUpClass(self): pass @classmethod def tearDownClass(self): pass def setUp(self): pass def tearDown(self): pass def test_xxx(self): pass @unittest.skip('Skip this test case.') def test_yyy(self): pass # 这个测试用例不会被执行 def test_zzz(self): pass

  5.判定方法

  unittest提供了很多断言,来判断测试是否成功。

  ?断言:self.assertEqual(a,b)含义:a==b?断言:self.assertNotEqual(a,b)含义:a!=b?断言:self.assertTrue(x)含义:x is True?断言:self.assertFalse(x)含义:x is False?断言:self.assertIn(a,b)含义:a in b?断言:self.assertNotIn(a,b)含义:a not in b 也可以直接assert接布尔表达式来判断,例如assert a==1。

  三、生成测试报告

  import HTMLTestRunnerNewfp = open('123.html', 'wb') 创测试报告html文件,此时还是个空文件HTMLTestRunnerNew.HTMLTestRunner( stream=fp, title='接口测试报告', description='测试报告结果如下').run(sui)# stream = fp 引用文件流# title 测试报告标题# description 报告说明与描述fp.close() # 关闭文件流,将HTML内容写进测试报告文件。

  以上是关于python + unittest接口自动化测试的介绍,由多测师亲自撰写。https://www.aichudan.com/

联系电话

17727591462

返回顶部