unittest框架

unittest框架

1、写用例:TestCase 类
2、加载用例:TestSuite 类    TestLoader 类
3、对比结果(执行结果/期望结果):assert函数
4、执行并出结果:TextTestRunner 类
5、报告:HtmlTestReport 类

1)首先建一个math_method.py文件,用来存在被测试函数

1 # 被测类函数
2 class MathMethod():
3
4     def add(self, a, b):
5         return a + b
6
7     def sub(self, a, b):
8         return a - b

2)新建一个test_case1.py文件,用来存放测试用例代码

 1 # from unittest.case import TestCase  #在文件unittest文件下面case文件中存在TestCase模块
 2 # class TestAdd(TestCase):
 3
 4 import unittest
 5 from test_unittest.math_method import MathMethod  # 导入被测试类
 6
 7
 8 class TestAdd(unittest.TestCase):  # 测试类  专门测试加法类
 9     # 写用例 每一条用例都是一个类函数
10     # 用例 def test_后缀(self) :用例函数必须test开头
11
12     def setUp(self):  # 测试环境的搭建
13         print("我要开始测试咯")
14         self.t = MathMethod()
15
16     def tearDown(self):  # 测试环境的销毁
17         print("我测试完成咯")
18
19     def test_add_two_zero(self):  # 测试两个零相加的用例
20         # t = MathMethod()  # 创建实例
21         # res = t.add(0, 0)
22
23         res = self.t.add(0, 0)
24         # 断言函数的调用,注意:为啥用self,因为调用父类的方法
25         self.assertEqual(1, res)
26         print("测试的结果是:{0}".format(res))
27
28     def test_add_two_positive(self):  # 测试两个整数相加的用例
29         # t = MathMethod()  # 创建实例
30         # res = t.add(4, 5)
31
32         res = self.t.add(4, 5)
33         print("测试的结果是:{0}".format(res))
34
35     def test_add_two_negative(self):  # 测试两个负数相加的用例
36         # t = MathMethod()  # 创建实例
37         # res = t.add(-4, -5)
38
39         res = self.t.add(-4, -5)
40         print("测试的结果是:{0}".format(res))
41
42
43 class TestSub(unittest.TestCase):  # 测试类 专门测试减法
44     # 写用例 每一条用例都是一个类函数
45     # 用例 def test_后缀(self) :用例函数必须test开头
46
47     def test_sub_two_zero(self):  # 测试两个零相减的用例
48         t = MathMethod()  # 创建实例
49         res = t.sub(0, 0)
50         print("测试的结果是:{0}".format(res))
51
52     def test_sub_two_positive(self):  # 测试两个整数相减的用例
53         t = MathMethod()  # 创建实例
54         res = t.sub(4, 5)
55         print("测试的结果是:{0}".format(res))
56
57     def test_sub_two_negative(self):  # 测试两个负数相减的用例
58         t = MathMethod()  # 创建实例
59         res = t.sub(-4, -5)
60         print("测试的结果是:{0}".format(res))
61
62
63 if __name__ == ‘__main__‘:
64     unittest.main()

3)新建一个test_suite.py文件,用来存放加载用例,执行用例,生成报告的代码

  1 import unittest
  2 from test_unittest.test_case1 import TestAdd  # 测试类
  3 from test_unittest.test_case1 import TestSub  # 测试类
  4 from test_unittest import test_case1  # 测试模块
  5 import HTMLTestRunnerNew  # 生成html文件测试报告,这个文件放在lib文件里面
  6 from test_unittest.test_case2 import TestAdd  # 测试类
  7 from test_unittest import test_case2  # 测试模块
  8 from test_unittest.read_config import ReadConfig  # 配置文件
  9
 10 from test_unittest.do_excel import DoExcel
 11
 12 # 加载测试用例
 13 # suite:测试套件/测试用例的容器,这边suite是一个实例
 14 suite = unittest.TestSuite()
 15
 16 # 怎么把测试用例放到测试套件suite里面去,以实例的形式添加进去
 17
 18 # # 方法一
 19 # # suite.addTest()是suite实例调用父类的addTest的方法
 20 # suite.addTest(TestAdd(-4, -5, 0, "test_add"))
 21 # suite.addTest(TestAdd(‘test_add_two_positive‘))  #test_add_two_positive必须要加因为是父类的初始化参数
 22
 23 ## 优化测试数据,方法1:参数化-测试数据列出来
 24 # test_data = [[0, 0, 0, ‘两个0相加‘],
 25 #              [1, 2, 3, ‘两个正数相加‘],
 26 #              [-1, -4, -5, ‘两个负数相加‘],
 27 #              [1, 0, 1, ‘一正一0相加‘],
 28 #              [-1, 0, -1, ‘一负一0相加‘]]
 29 # for item in test_data:
 30 #     suite.addTest(TestAdd(item[0], item[1], item[2], item[3], ‘test_add‘))
 31
 32
 33 # # 优化测试数据,方法2:调用测试数据,列表嵌套列表形式
 34 # test_data=DoExcel().do_excel()
 35 # for item in test_data:
 36 #     suite.addTest(TestAdd(item[2], item[3], item[4], item[1], ‘test_add‘))
 37
 38
 39 # # 优化测试数据,方法3:调用测试数据,列表嵌套字典形式
 40 # test_data=DoExcel().do_excel()
 41 # for item in test_data:
 42 #     suite.addTest(TestAdd(item[‘Param_a‘], item[‘Param_b‘], item[‘ExceptedResult‘], item[‘title‘], ‘test_add‘))
 43
 44 # # 优化测试数据,方法4:调用测试数据,列表嵌套字典形式,但是要写回测试结果
 45 # test_data=DoExcel().do_excel()
 46 # for item in test_data:
 47 #     suite.addTest(TestAdd(item[‘Param_a‘], item[‘Param_b‘], item[‘ExpectedResult‘], item[‘title‘], item[‘id‘] ,‘test_add‘))
 48
 49
 50 # # 优化测试数据,方法5:结合配置文件,执行测试用例
 51 # test_data = DoExcel().do_excel()
 52 #
 53 # #   实例化,获取mode和case_id_list
 54 # mode = ReadConfig().read_config("case.config", "FLAG", "mode")
 55 # case_id_list = eval(ReadConfig().read_config("case.config", "FLAG", "case_id_list"))
 56 #
 57 # if mode == "on":
 58 #     final_data = test_data
 59 # else:
 60 #     final_data = []
 61 #     for item in test_data:
 62 #         if item[‘id‘] in case_id_list:
 63 #             final_data.append(item)
 64 #
 65 # for item in final_data:
 66 #     suite.addTest(
 67 #         TestAdd(item[‘Param_a‘], item[‘Param_b‘], item[‘ExpectedResult‘], item[‘title‘], item[‘id‘], ‘test_add‘))
 68
 69
 70 # 优化测试数据,方法6:结合配置文件,执行测试用例,判断放在读取文件中do_excel
 71 #   实例化,获取mode和case_id_list
 72 mode = ReadConfig().read_config("case.config", "FLAG", "mode")
 73 case_id_list = eval(ReadConfig().read_config("case.config", "FLAG", "case_id_list"))
 74
 75 test_data = DoExcel().do_excel(mode, case_id_list)
 76
 77 for item in test_data:
 78     suite.addTest(
 79         TestAdd(item[‘Param_a‘], item[‘Param_b‘], item[‘ExpectedResult‘], item[‘title‘], item[‘id‘], ‘test_add‘))
 80
 81 # 方法二
 82 # loader = unittest.TestLoader()
 83 # 直接加载某个测试类里面的所有用例
 84 # suite.addTest(loader.loadTestsFromTestCase(TestAdd))
 85 # suite.addTest(loader.loadTestsFromTestCase(TestSub))
 86
 87 # 直接加载某个测试模块里面的用例
 88 # suite.addTest(loader.loadTestsFromModule(test_case2))
 89
 90 # # 执行用例TextTestRunner 类 专门来执行suite测试套件里面的用例
 91 # runner = unittest.TextTestRunner()   # 实例化
 92 # # 使用实例化的run方法
 93 # runner.run(suite)
 94
 95
 96 # # 使用TextTestRunner可执行用例并且返回结果,优化生成txt格式报告
 97 # with open("test_result.txt", ‘w+‘, encoding="utf-8") as f:
 98 #     runer = unittest.TextTestRunner(f, verbosity=2)
 99 #     runer.run(suite)
100
101
102 # 使用HTMLTestRunnerNew生成html格式的测试报告
103 # 优化生成html格式报告   使用二进制形式写入,不支持utf-8格式,故不需要写
104 with open(‘test_result.html‘, "wb+") as f:
105     runer = HTMLTestRunnerNew.HTMLTestRunner(f, verbosity=2, title="测试报告", description=None, tester="xxx")
106     runer.run(suite)

备注:

执行结果,如果鼠标放在某一个测试用例函数后面则只执行这个用例;若放在最后一行测试用例的下面则执行所有测试用例
执行结果顺序按照函数名ASCII码排序A-Z,0-9 test_add_two_negative test_add_two_positive test_add_two_zero
使用main函数则也是执行整个所有用例

原文地址:https://www.cnblogs.com/lctest/p/12123646.html

时间: 2024-11-09 04:42:18

unittest框架的相关文章

selenium + python自动化测试unittest框架学习(二)

1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py >test_case >__init__.py >test_case1..... >public >__init__.py >login.py >loginout.py test_case文件夹主要存放测试用例,且测试用例命名以test_开头 public文件夹是test

selenium + python自动化测试unittest框架学习(一)selenium原理及应用

unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻.unittest框架学习需要掌握以下知识点: (1)Selenium原理及工具使用 (2)webdriver元素定位,id,name,class name,css seletor,xpath (3)python语言基础,模块,参数化,语言,装饰器 (4)unittest框架认识及学习:模块化,断言,参数化,数

Selenium2+python自动化30-引入unittest框架【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.co

第9课:备份mysql数据库、重写父类、unittest框架、多线程

1. 写代码备份mysql数据库: 1)Linux下,备份mysql数据库,在shell下执行命令:mysqldump -uroot -p123456 -A >db_bak.sql即可 import os import datetime class BakDb(object): def __init__(self, ip, username, passwd, port=3306, path='/tmp/db_bak'): self.ip = ip self.username = username

python - 简述unittest框架

简述unittest框架 unittest单元测试框架不仅可以适用于单元测试,还可以适用web UI 和 接口 API 自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. 一.unittest结构概览 unittest中最核心的四个概念是:test fixture.test case, test suite, test runner/report 1.test fixture ① setup():每个测试函数运行前运行 ②

Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins

本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存放Excel表 3.封装一套读取和写入的Excel方法 4.重写request方法(为了从Excel读取数据后对数据作分析和判断并在测试报告生成相关信息) 5.通过HTMLTestRunner运行测试用例生成网页版报告 6.将自动化脚本放到公司git上,方便其他人员获取你的代码进行编写脚本,后面会具

Selenium2+python自动化20-引入unittest框架

Selenium2+python自动化20-引入unittest框架 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchEl

unittest单元测试框架之unittest 框架的总结(七)

1. Unittest 是 python 自带的单元测试框架,可以用其作为自动化框架来组织测试用例(测 试用例的执行顺序)的执行. 2. Unittest 框架的流程: 写好 TestCase 通过 TestLoader 加载 TestCase 到 TestSuite 中 通过 TextTestRunner 来原型 TestSuite,结果保存在 TextTestResult 中,我们通过命 令行或者 unittest.main()来执行 3.通过 TextTestRunner 来原型 Test

unittest单元测试框架之unittest 框架的总结2(八)

unittest 下的属性 1.Unittest.TestCase:所有测试用例类继承的基本类 2.Unittest.main():将一个单元测试模块变为可直接运行的测试脚本 If __name__ == "__main__": Unittest.main() 3.Unittest.TestSuite:创建测试套件 4.unittest.TextTestRunner():unittest 框架的 TextTestRunner()类,通过该类下面的 run()方 法来运行 suite 所

unittest框架执行用例

pycharm中运行脚本的方式总共有三种,分别为:unittest模式,pytest模式,普通模式,今天主要来聊一聊unittest模式执行与普通执行(因为最近在学习unittest框架,所以pytest以后再说),不多说先上脚本 1 import unittest 2 3 4 class MyTest(unittest.TestCase): 5 6 def setUp(self): 7 print("==setUp==") 8 9 def tearDown(self): 10 pri