requests与unittest的自动化校验
import requests
import unittest, json
import parameterized
# 1.定义一个函数
def test_login(username, password):
# 请求的URL
url = ‘http://yun.zenm.vip/iot/account/login/‘
# 请求的数据
data = {
‘username‘: username,
‘password‘: password
}
# header 需要的头部信息
header = {
"Content-Type": "application/json"
}
# json.dumps(data) 请求的数据为字典 需要转为转为json格式
data_json = json.dumps(data)
# 发起请求,headers是请求头的数据,data是请求所携带的参数,url是请求接口的url
res = requests.post(url=url, data=data_json, headers=header)
# 把返回的数据转为json
json_data = res.json()
print(res.json())
return json_data
# 2.为当前接口写测试用例
class YunCeShi(unittest.TestCase):
# parameterized方法 用装饰器 一次执行多个测试用例
@parameterized.parameterized.expand(
[(‘peter‘, ‘admin‘, 200), (‘peter‘, ‘123456‘, 4), (‘peter11‘, ‘admin‘, 5)]
)
def test_01(self, username, password, code):
# 获取requests请求后的数据
json_data = test_login(username, password)
# 断言 请求后返回的状态码与测试用例里的是否一致 不一致就断言失败
self.assertEqual(json_data[‘result‘], code)
# # 执行单个测试用例,一个一个执行
# # 错误的密码
# def test_02(self):
# username = ‘peter‘
# password = ‘123456‘
# result = 4
#
# # 获取requests请求后的数据
# json_data = test_login(username, password)
# self.assertEqual(json_data[‘result‘], result)
#
# # 错误的用户名
# def test_03(self):
# username = ‘peter11‘
# password = ‘admin‘
# result = 5
#
# # 获取requests请求后的数据
# json_data = test_login(username, password)
# self.assertEqual(json_data[‘result‘], result)
from HTMLTestRunner import HTMLTestRunner
import unittest
from yun.yun_test import YunCeShi
# 3.将测试用例写入套件
suite = unittest.TestSuite()
# 3.1 unittest.makeSuite(类名) makeSuite方法是将整个类的测试用例写入套件
suite.addTest(unittest.makeSuite(YunCeShi))
# 将测试用例逐个添加到套件里
# suite = unittest.TestSuite()
# suite.addTest(TestSum(‘test_001‘))
# suite.addTest(TestSum(‘test_002‘))
# suite.addTest(TestSum(‘test_003‘))
# suite.addTest(TestSum(‘test_004‘))
# 批量执行一个py文件里面所有的用例
# suite = unittest.TestLoader().discover(‘./‘, ‘unittest_taojian.py‘)
# 4.生成测试报告
# 4.1 wb 是 以二进制形式写入文件
f = open(‘yun.html‘, ‘wb‘)
# 4.2 指定HTMLTestRunner的参数
runner = HTMLTestRunner(stream=f, title=‘云测试‘, description=‘浏览器‘)
# 4.3 生成测试报告
runner.run(suite)
# 4.4 关闭文件
f.close()