unittest 用例编写,套件执行

Posted addicated

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest 用例编写,套件执行相关的知识,希望对你有一定的参考价值。

unittest测试用例类的写法

定义测试用例类: 用例类必须继承于unittest.TestCase

定义测试用例: 在测试用例类中,每一个以test开头的方法就是一条用例

unittest中测试用例执行顺序

根据方法名按照ASCII码进行排序的

unittest中会自动根据用例方法执行的时候,是否出现断言异常,来评判用例执行是否通过

测试用例类书写步骤

上代码

class LoginTestCase(unittest.TestCase):

    def test_login_pass(self):
        # 第一步:准备用例数据
        # 参数准备
        data = {"username": "python27", "password": "lemonban"}
        # data = ["python27", "lemonban"]
        # user = "python27"
        # pwd = "lemonban"
        # 预期结果准备
        expected = {"code": 0, "msg": "登录成功"}

        # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
        res = login_check(**data)

        # 第三步:断言(比对预期结果和实际结果)
        # assert expected == res
        self.assertEqual(expected, res)

    def test_login_user_error(self):
        # 第一步:准备用例数据
        # 参数准备
        data = {"username": "python8888", "password": "lemonban"}
        expected = {"code": 1, "msg": "账号或密码不正确"}
        # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
        res = login_check(**data)
        # 第三步:断言(比对预期结果和实际结果)
        self.assertEqual(expected, res)

    def test_login_pwd_error(self):
        # 第一步:准备用例数据
        # 参数准备
        data = {"username": "python27", "password": "l1111111"}
        expected = {"code": 1, "msg": "账号或密码不正确"}
        # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
        res = login_check(**data)
        # 第三步:断言(比对预期结果和实际结果)
        self.assertEqual(expected, res)

    def test_login_pwd_is_none(self):
        # 第一步:准备用例数据
        data = {"username": "python27"}
        expected = {"code": 1, "msg": "所有的参数不能为空"}
        # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
        res = login_check(**data)
        # 第三步:断言(比对预期结果和实际结果)
        self.assertEqual(expected, res)

    def test_login_user_is_none(self):
        # 第一步:准备用例数据
        data = {"password": "l1111111"}
        expected = {"code": 1, "msg": "所有的参数不能为空"}
        # 第二步:获取实际结果(调用功能函数,传入参数,获取实际结果)
        res = login_check(**data)
        # 第三步:断言(比对预期结果和实际结果)
        self.assertEqual(expected, res)

进行测试并生成测试报告汇总

新编写一个运行入口

导入unittest,

第一步创建测试套件

suite = unittest.TestSuite()

第二步,加载测试用例到测试套件内

这里有几种加载方法

此方法需要借助unittest.TestLoadder()loader = unittest.TestLoader()   # 实例化TestLoader得到loader对象
suite.addTest(loader.loadTestFromTestCase(LoginTestCase)

第三步,执行测试套件中的用例

 # 创建测试运行程序
runner = unittest.TextTestRunner()
# 调用unittest下TextTestRunner()方法,返回runner对象。
runner.run(suite)  # 调用runner对象中的run方法、这种方式不会产生报告
# 会在控制台输出测试结果

第四步,生成测试报告,

本章记录两种生成测试报告的方式。

使用beautifulReport来执行测试套件中的用例并执行

# from BeautifulReport import BeautifulReport
# br = BeautifulReport(suite)
# br.report("27期第一份测试报告",
                "brreport.html",
                report_dir=r"C:projectpy27_classpy27_01day")
 # 参数解释,
 # param1:生成报告的title(就是浏览器查看是tab栏的名字)
 # param2: 生成的本地报告文件名
 # param3: 生成本地报告文件存储路径  

使用HTMLTestRunner来生成测试报告

# 使用 HTMLTestRunner来生成测试报告
# from HTMLTestRunnerNew import HTMLTestRunner
#
# runner = HTMLTestRunner(stream=open("new_report.html","wb"),
#                         title="27期第一份测试报告",
#                         tester="adiicated",
#                         description="第一个版本的测试"
#                         )
# runner.run(suite)
# 参数参照上面对比理解,不过多解释

测试用例加载方法的点

第一种,通过测试用例类加载

第二种,通过测试用例模块去加载

# from py27_14day import testcases
# loader = unittest.TestLoader()
# suite.addTest(loader.loadTestsFromModule(testcases)) 
# testcase 为模块名

第三种,通过路径去加载测试用例 默认会去找指定路径中test开头的模块中的测试用例

# loader = unittest.TestLoader()
# suite.addTest(loader.discover(r"C:projectpy27_classpy27_14day"))

# 实际运用中此种方法最为常见

第四种,一条一条的去加载

# from py27_14day.testcases import LoginTestCase
# case1 = LoginTestCase("test_login_pass")
# suite.addTest(case1)

 

以上是关于unittest 用例编写,套件执行的主要内容,如果未能解决你的问题,请参考以下文章

unittest-测试套件

unittest单元测试框架之测试套件

unittest学习3:用例执行

Selenium3.0基础 — unittest中测试套件的使用

python实例编写---测试报告与测试套件(多个py文件,1个py文件内多个用例)

测试套件TestSuite