python接口自动化--unittest框架+HTMLTestRunner

Unitest是python里面的单元测试框架,方便组建测试用例,执行用例,并生成测试报告

  • 注意:
  • 测试类,继承单元测试unitest.TestCase这个类
  • 测试方法(用例)必须以test开头
  • 测试类就是多个用例的一个集合,相当于是测试用例的一个模块
 1 import unittest
 2
 3 class TestCase(unittest.TestCase):
 4
 5     def testPlus(self):
 6         a = 2
 7         b = 3
 8         c = a + b
 9         self.assertEqual(c,5)
10
11     def testReduce(self):
12         a = 5
13         b = 3
14         c = a - b
15         self.assertEqual(c,2)
16
17 if __name__ == ‘__main__‘:
18     unittest.main()

前置条件setUp(self):每个用例执行前,执行一次

后置条件teardown(self):每个用例执行后,执行一次

 1 import unittest
 2
 3 class TestCase(unittest.TestCase):
 4
 5     def setUp(self):
 6         print("每个用例执行前执行一次")
 7
 8     def tearDown(self):
 9         print("每个用例执行后执行一次")
10     def test001(self):
11         print("测试用例001")
12     def test002(self):
13         print("测试用例002")
14
15 if __name__ == ‘__main__‘:
16     unittest.main()

结果:

1 Testing started at 13:08 ...
2 每个用例执行前执行一次
3 测试用例001
4 每个用例执行后执行一次
5 每个用例执行前执行一次
6 测试用例002
7 每个用例执行后执行一次
8
9 Process finished with exit code 0

前置setUpClass:只执行一次前置,必须加@classmethod

后置tearDownClass:只执行一次结束,必须加@classmethod

例:

 1 import unittest
 2
 3 class TestCase(unittest.TestCase):
 4
 5     @classmethod
 6     def setUpClass(cls):
 7         print("只开始执行一次")
 8     @classmethod
 9     def tearDownClass(cls):
10         print("只结束执行一次")
11
12     def setUp(self):
13         print("每个用例执行前执行一次")
14
15     def tearDown(self):
16         print("每个用例执行后执行一次")
17     def test001(self):
18         print("测试用例001")
19     def test002(self):
20         print("测试用例002")
21
22 if __name__ == ‘__main__‘:
23     unittest.main()

结果:

 1 Testing started at 13:12 ...
 2 只开始执行一次
 3 每个用例执行前执行一次
 4 测试用例001
 5 每个用例执行后执行一次
 6 每个用例执行前执行一次
 7 测试用例002
 8 每个用例执行后执行一次
 9 只结束执行一次
10
11 Process finished with exit code 0

项目框架

一级目录:项目名称

  二级文件夹:report

  二级文件夹:test_cases

    可以建三级子文件夹

    (待执行的脚本用test开头)

  二级文件夹:common

     存放一些公共模块,如HTMLTestRunner.py

  主函数:run_all.py

测试用例

 1 #test_case\test_qqtest.py
 2
 3 import unittest
 4 import requests
 5
 6 class QQtest(unittest.TestCase):
 7
 8     def setUp(self):
 9         ‘‘‘测试前置‘‘‘
10         self.url = "http://japi.juhe.cn/qqevaluate/qq"
11         self.headers={
12             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
13         }
14         self.s = requests.session()
15
16     def tearDown(self):
17         ‘‘‘清除数据‘‘‘
18         self.s.close()
19     def test001(self):
20         ‘‘‘测试用例001‘‘‘
21         self.params ={
22             "qq":"741841851",
23             "key":"49c47ae3d1e8e3e49578f03cee1e7a7a"
24         }
25         r = self.s.get(self.url,params=self.params,headers=self.headers,verify=False)
26         result = r.json()
27         # print(result)
28         reason = result[‘reason‘]#获取接口状态
29         data = result[‘result‘][‘data‘][‘conclusion‘]#获取吉凶数据
30         self.assertEqual(reason,‘success‘)
31
32     def test002(self):
33         ‘‘‘测试用例002‘‘‘
34         self.params ={
35             "qq":"",
36             "key":"49c47ae3d1e8e3e49578f03cee1e7a7a"
37         }
38         r = self.s.get(self.url,params=self.params,headers=self.headers,verify=False)
39         result = r.json()
40         print(result)
41         reason = result[‘reason‘]#获取接口状态
42         # data = result[‘result‘][‘data‘][‘conclusion‘]#获取吉凶数据
43         self.assertEqual(reason,‘错误的请求参数‘)
44
45 if __name__ == ‘__main__‘:
46     unittest.main()

主函数:

 1 run_all.py
 2
 3 import unittest
 4 from common.HTMLTestRunner import HTMLTestRunner
 5 import os
 6
 7 #获取当前运行的目录
 8 dirpath = os.path.dirname(os.path.realpath(__file__))
 9 print("当前运行的目录是:%s " %dirpath)
10
11 #获取用例目录用join拼接
12 casepath = os.path.join(dirpath,"test_case")
13
14 print("用例目录是:%s" %casepath)
15
16 #获取报告的目录
17 reportpath=os.path.join(dirpath,‘report‘,‘report.html‘)
18 print("报告的目录是:%s" %reportpath)
19
20 #查找用例
21 all_cases=unittest.defaultTestLoader.discover(casepath,pattern=‘test*.py‘)
22 print(all_cases)
23
24 fp = open(reportpath,‘wb‘)
25
26 runner = HTMLTestRunner(stream=fp,
27                         title=‘qq号测试吉凶自动化测试报告‘,
28                         description=‘qq号测试吉凶‘,
29                         )
30
31
32 runner.run(all_cases)

报告

原文地址:https://www.cnblogs.com/xiaoyujuan/p/11302474.html

时间: 2024-11-04 07:21:09

python接口自动化--unittest框架+HTMLTestRunner的相关文章

python接口自动化8-unittest框架使用

前言 unittest:Python单元测试框架,基于Erich Gamma的JUnit和Kent Beck的sSmalltalk测试框架. 一.unittest框架基本使用 unittest需要注意的是:①类,继承单元测试unittest 的 TestCase类:②测试用例必须以test开头.学会基本前后置灵活运用以及断言即可. 1.setUp:每个用例“前”都执行 1 次.tearDown:每个用例“后”都执行 1 次.test开头的用例. setUp.tearDown既是每次用例都执行的前

python接口自动化测试 - unittest框架基本使用

unittest简单介绍 单元测试框架 还可以适用WEB自动化测试用例的开发与执行 提供丰富的断言方法 官方文档:https://docs.python.org/zh-cn/3/library/unittest.html unittest基础使用 1 # 导入unittest模块 2 import unittest 3 4 5 # 创建单元测试类,继承unittest.TestCase 6 class testCase(unittest.TestCase): 7 8 def setUp(self

python接口自动化测试 - unittest框架suite、runner详细使用

test suite 测试套件,理解成测试用例集 一系列的测试用例,或测试套件,理解成测试用例的集合和测试套件的集合 当运行测试套件时,则运行里面添加的所有测试用例 test runner 测试运行器 用于执行和输出结果的组件 test suite.test runner基础使用 单元测试类 1 # 创建单元测试类,继承unittest.TestCase 2 class testCase(unittest.TestCase): 3 4 # 测试case 5 def test_01(self):

python接口自动化之openpyxl学习

python接口自动化之openpyxl学习 由于接口自动化测试需要用到python的第三方库--openpyxl库,运用openpyxl库可以进行exl的读和写,再结合unittest测试框架,就能进行接口自动化测试. 一:openpyxl库的安装:pip install openpyxl   二:查看openpyxl库的属性 import openpyxldir1= dir(openpyxl)print(dir1) ['DEFUSEDXML', 'LXML', 'NUMPY', 'PANDA

2020年第二期《python接口自动化+测试开发》课程,预售!

2020年第二期<python接口自动化+python测试开发>课程,12月15号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:12月15号-3月29号,每周六.周日晚上20:30-22:30 报名费:报名费3000一人(周期3个月) 联系QQ:283340479 课表如下 课程主要涉及的内容: 1.fiddler抓包与接口测试(测试基础必备) 2.python+pytest框架实现接口自动化测试(pytest框架甩unittest几条街) 3.httpr

2020年第三期《python接口自动化+测试开发》课程,4月5号开学(火热报名中!)

2020年第三期<python接口自动化+python测试开发>课程,4月5号开学(火热报名中!) 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:4月5号-6月27号,每周六.周日晚上20:30-22:30 报名费:报名费3000一人(周期3个月) 联系QQ:283340479 课表如下 课程主要涉及的内容: 1.fiddler抓包与接口测试(测试基础必备) 2.python+pytest+allure框架实现接口自动化测试(pytest框架甩unittest几条

python单元测试之unittest框架

python单元测试之unittest框架 一.什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入相同 (2)输入复数,比如-1.-1.2.-0.99,期待返回值与输入相反 (3)输入0,期待返回0 (4)输入非数值类型,比如None.[].{}.期待抛出TypeError 把上面这些测试用例放到一个测试模块里,就是一个完整的单元测试 我们先写一个

python接口自动化9-https请求(SSL)

前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会报:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 小编环境: python:2.7.12 requests:2.13.0 fiddler:v4.6.2.0 一.SSL问题 1.不启用fiddler,直接发htt

python接口自动化2-发送post请求

前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的.登录问题解决了,后面都简单了. 一.查看官方文档 1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容. >>import requests >>help(requests) 2.查看python发送get和post请求的案例 >>> import requests       >>> r