设为首页 加入收藏

TOP

Python单元测试框架unittest/反射(一)
2023-07-25 21:28:59 】 浏览:92
Tags:Python 单元测 unittest/ 反射

1)写用例 TestCase

2)执行用例 1:TestSuite存储用例,2:TestLoader找用例,存储用例,存放指定的TestSuite

3)对比实际结果/期望结果,判定用例是否通过#断言Assert

4)出局测试报告TextTestRunner

1.测试类

import requests
class HttpRequest():
    def __init__(self, method, url, param=None, headers=None, cookie=None):
        self.method=method#method:请求方式
        self.url=url#url:请求的url
        self.param=param#param:请求参数
        self.headers=headers#headers:请求头
        self.cookie=cookie#cookie:请求的cookie值
    def http_request(self):
        if self.method.lower()=="post":
            return requests.post(self.url,self.param)
        elif self.method.lower()=="get":
            return requests.get(self.url,self.param,headers=self.headers,cookies=self.cookie)
        else:
            print("请求方式错误:{0}".format(self.method))

2.TestCase/断言/异常处理

import unittest#引入unittest框架
from test01.qabujiaban_class import HttpRequest#引入测试类

#编写一个存储测试用例的类
class TestHttp(unittest.TestCase):#用例类继承unittest.TestCase用于编写测试用例
    #正确登陆测试用例
    def test_login_yes(self):#测试用例函数必须test_开头,否则框架无法识别当前是用例
        login_url = "http://www.qabujiaban.com/user/login"
        data = {"username": "uuuu222都44", "password": "WJHasb124*1"}
        res = HttpRequest("Post", login_url, data).http_request()
        print("登陆响应文本:", res.json())  #
        try:
            self.assertEqual("0000", res.json()["code"])  # 断言,期望值==实际值
        except AssertionError as e:
            print("断言错误异常抛出:{0}".format(e))
            raise e#抛出异常
            #错误登陆测试用例
    def test_login_no(self):
        login_url = "http://www.qabujiaban.com/user/login"
        data = {"username": "uuuu222都44", "password": "123456"}#密码错误
        res = HttpRequest("Post", login_url, data).http_request()
        print("登陆响应文本:", res.json())  #
        try:
            self.assertEqual("0000", res.json()["code"])  # 断言,期望值==实际值
        except AssertionError as e:
            print("断言错误异常抛出:{0}".format(e))
            raise e#抛出异常

if __name__ == '__main__':
    unittest.main()#执行全部测试用例
执行结果:

============================= test session starts =============================
platform win32 -- Python 3.7.3, pytest-7.2.0, pluggy-1.0.0
rootdir: C:\Users\Administrator\PycharmProjects\demo\test01
plugins: html-3.2.0, metadata-2.0.4collected 2 items

testdemo01.py                                                          [100%]

============================== 2 passed in 0.35s ==============================

Process finished with exit code 0
.登陆响应文本: {'code': '0002', 'message': '登陆失败,密码错误'}
.登陆响应文本: {'code': '0000', 'message': '登陆成功', 'login_time': '2022-59-19 11:12:04', 'create_time': '2021-23-28 04:12:19'}
注意:

执行结果中,E表示错误,F表示失败,  .  点表示成功

3.unittest.addTest()

import unittest
from test01.demo_case import TestHttp#引入测试用例类

suite = unittest.TestSuite()#存储器,存储用例
#第一个用例
suite.addTest(TestHttp("test_login_yes"))#添加要执行的用例
#第二个用例
suite.addTest(TestHttp("test_login_no"))

runner = unittest.TextTestRunner()
runner.run(suite)#执行
执行结果:

.登陆响应文本: {'code': '0000', 'message': '登陆成功', 'login_time': '2022-12-20 12:12:33', 'create_time': '2021-23-28 04:12:19'}
登陆响应文本: {'code': '0002', 'message': '登陆失败,密码错误'}
.
----------------------------------------------------------------------
Ran 2 tests in 0.275s

OK

Process finished with exit code 0

4.loader.lo

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇matplotlib画图基础知识 下一篇Python类的封装教程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目