Python接口测试学习笔记(六)

本文学习笔记整理自【Python开发】接口测试教程

 一. unittest

0. unittest扫盲

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

print(help(unittest))可查看帮助文档(需要import unittest)

1. unittest简介

1. 测试类, 继承单元测试unittest.TestCase这个类

2. 测试方法(用例)必须以"test"开头

3. 测试类就算多个用例的一个集合, 相当于是测试用例的一个模块

2. 前置与后置(非必须)

1. 前置条件: setUp(self) , 比如所有的用例都是基于登录后操作, 这个登录就算用例的前置

2. 后置条件:tearDown(self), 后置条件就是每次执行案例后要做的操作, 比如清理垃圾数据等

3. setUpClass, 只执行一次前置, 上面必须加@classmethod

4. tearDownClass, 只执行一次前置, 上面必须加@classmethod

 1 import unittest
 2 
 3 
 4 class TestCase(unittest.TestCase):
 5     @classmethod
 6     def setUpClass(cls):
 7         print("setUpClass初始化操作: 用例开始前只执行一次")
 8 
 9     @classmethod
10     def tearDownClass(cls):
11         print("tearDownClass收尾操作: 用例结束时只执行一次")
12 
13     def setUp(self):
14         print("setUp每次用例开始前都会执行")
15 
16     def tearDown(self):
17         print("tearDown每次用例结束时都会执行")
18 
19     def test_01(self):
20         print("正在执行用例01")
21 
22     def test_02(self):
23         print("正在执行用例02")
24 
25 
26 if __name__ == '__main__':
27     unittest.main()

3. 用例执行顺序

用例执行顺序根据ASCII码排序(不用管执行顺序, 用例要相互独立)

二. 批量执行

0. 目录结构:

1. discover : 加载指定目录下的所有用例, 并用runner批量执行

 1 import os
 2 import unittest
 3 
 4 
 5 def all_case(case="testcase"):
 6     # 加载指定目录下的所有用例
 7     # 待执行用例的目录
 8     case_dir = os.getcwd() + "\" + case
 9     # case_dir指找testcase的目录
10     # pattern指通配具体testcase的方法
11     discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py")
12     return discover
13 
14 
15 if __name__ == '__main__':
16     # 返回实例
17     runner = unittest.TextTestRunner()
18     runner.run(all_case())

三. 测试报告

注: tungwaiyip原始版(一般也是网络流传版)基于Python2, 适应Python需要改一些内容. 请自行Google.

以下内容使用oldani的版本(基于tungwaiyip的版本)

1. 安装:

pip install html-testRunner

2. 执行案例并生成报告

# coding:utf-8
import os
import unittest
import HtmlTestRunner


def all_case(case="testcase"):
    case_dir = os.getcwd() + "\" + case
    discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py")
    return discover


if __name__ == '__main__':
    html_report_dir = os.getcwd() + "\report"
    runner = HtmlTestRunner.HTMLTestRunner(output=html_report_dir, combine_reports=True, report_name="TestCaseReport",
                                           add_timestamp=False, report_title="测试报告", descriptions="html测试报告")
    runner.run(all_case())

注: 虽然HtmlTestRunner源码里面的runner.py已经encoding='UTF-8', 但执行后仍然是乱码, 需要修改HtmlTestRunner源码下的result.py文件generate_file方法里的写入:

with open(path_file, 'w') as report_file:        --->  with open(path_file, 'w',encoding="utf-8") as report_file:

3. 以上操作后的结果:

原文地址:https://www.cnblogs.com/fayez/p/12388833.html