接口自动化测试(一)-unittest

unittest

unittest是Python自带的框架

一、为什么选择unittest做自动化测试

单元测试是对单个模块、单个方法进行测试,通常是由开发做,代码测试代码,代码型的测试用例

tester做的测试:Excel写用例,执行用例,人为地判断结果、人为输出测试报告

自动化测试:代码实现测试用例、代码执行用例、代码判断结果,代码生成测试报告

所以,自动化测试可以用unittest框架来做

二、unittest的重要组成

在这里插入图片描述

三、继承TestCase类编写测试用例

有固定的语法

1、定义一个测试类,继承了unittest.TestCase

2、在测试类中,以【test_】开头,定义测试函数(测试用例)

3、编写用例:
1、处理测试数据
2、测试步骤
3、断言:预期结果与实际结果进行对比
4、前置后置

四、收集用例

有多种方式:
1、TestSuit()
s = unittest.TestSuit()
1.1添加一个用例
s.addTest(类名(函数名))
1.2添加多个用例
s.addTests([类名(函数名),类名(函数名)])

2、TestLoader()
2.1、通过目录
s=unittest.TestLoader().discover(搜索目录)
#搜索目录中以【test】开头的py文件,
#文件中继承了unittest.TestCase类的测试类,类当中以test_开头的测试函数

2.2、通过类名
s=unittest.TestLoader().loadTestsFromTestCase(测试类名)

2.3、通过模块名
s=unittest.TestLoader().loadTestsFromModule(模块名)

六、运行测试用例并生成结果

也是有多种方式
1、unittest.main() #执行所有用例,没有报告,控制台显示

2、生成HTML测试报告*(常用)*
#先导入:from HTMLTestRunnerNew import HTMLTestRunner
HTMLTestRunner(测试报告路径).run(s)

3、执行容器中的用例,生成Text测试报告
unittest.TextTestRunner().run(s)

4、生成HTML测试报告*(常用)*
#BeautifulReport要另外安装
#先导入:from BeautifulReport import BeautifulReport
br = BeautifulReport(s)
br.report(“测试报告”,“report.html”)
……
还有很多方式

demo代码

```javascript
from common.handle_request import send_requests
from common.handle_excel import HandleFile
from common.handle_path import datas_path,cases_path,reports_path,now
from ddt import ddt,data
import json
import unittest
from HTMLTestRunnerNew import HTMLTestRunner

# get_excel_data()在后续的文章有详细说明
cases = HandleFile(datas_path + "\\login_cases.xlsx").get_excel_data()

@ddt
class TestLogin(unittest.TestCase):
    @classmethod
    def setUp(self) -> None:
        print("=========【测试开始】=每个用例执行开始前都会执行【setUp】=========")
    @classmethod
    def tearDown(self) -> None:
        print("=========【测试结束】=每个用例执行结束后都会执行【tearDown】=========")

    @classmethod
    def setUpClass(cls) -> None:
        print("=========【测试开始】=每个测试类执行开始前都会执行【setUpClass】=========")

    @classmethod
    def tearDownClass(cls) -> None:
        print("=========【测试结束】=每个测试类执行结束后都会执行【tearDownClass】=========")

    @data(*cases)
    def test_login(self,case):
        print("执行第{}条用例:{}".format(case["id"],case["title"]))
        # send_requests() 在后续的文章有详细说明
        respon = send_requests(case["method"],case["url"],data=case["request_data"])
        print("测试结果为:",respon.json())
        expect_data = json.loads(case["expect_data"])
        try:
            self.assertEqual(respon.json()["code"],expect_data["code"])
            self.assertEqual(respon.json()["msg"], expect_data["msg"])
        except:
            print("断言失败")
            raise

if __name__ == '__main__':
    s = unittest.TestLoader().discover(cases_path + "\\unittest")
    with open(reports_path + now + "_report.html", "wb") as fs:
        runner = HTMLTestRunner(fs, title="登录测试报告", tester="lintt")
        runner.run(s)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值