python接口自动化unittest+HTMLrunner

1、创建一个packpage包

import unittest
import requests
from time import sleep
import HTMLTestRunner

# 构造WeatherTest类,继承unittest.TestCase
class WeatherTest(unittest.TestCase):
# 用例执行前的准备工作
def setUp(self):
self.url = 'http://t.weather.sojson.com/api/weather/city'

# 定义测试guangzhou天气的方法
def test_weather_handan(self): # 用例方法需要以test开头,便于执行顺利
'''
Case01-正常存在的city_code值
'''
data = {'city_code':'101091001'}
r = requests.get(self.url+'/'+data['city_code']) # 拼接接口URL
result = r.json() # 将返回结果转换为json类型

# 设置断言
self.assertEqual(result['status'],200) # 状态码
self.assertEqual(result['message'],'Success !')
self.assertEqual(result['cityInfo']['city'],'邯郸市')
self.assertEqual(result['cityInfo']['cityId'],'101091001')
sleep(3) # 控制请求的间隔时间,防止过快请求而IP受限制

def test_weather_param_error(self):
'''
Case02-错误的city_code值
'''
data = {'city_code':'666abc'}
r = requests.get(self.url+'/'+data['city_code'])
result = r.json()

self.assertEqual(result['message'],'Request resource not found.')
self.assertEqual(result['status'],404)
sleep(3)

def test_weather_param_non_existent(self):
'''
Case03-不存在的city_code值
'''
data = {'city_code':'123456789'}
r = requests.get(self.url+'/'+data['city_code'])
result = r.json()

self.assertEqual(result['message'],'no_city_id')
self.assertEqual(result['status'],403)
sleep(3)

def test_weather_no_param(self):
'''
Case04-不传入任何city_code值(空)
'''
data = {'city_code':''}
r = requests.get(self.url+'/'+data['city_code'])
result = r.json()

self.assertEqual(result['message'],'Request resource not found.')
self.assertEqual(result['status'],404)
sleep(3)

# 调试WeatherTest类
if __name__ == '__main__':
report_dir = r's.html'
re_open=open(report_dir,'wb')
suite=unittest.TestLoader().loadTestsFromTestCase(WeatherTest)
runner=HTMLTestRunner.HTMLTestRunner(
stream=re_open,
title=u'天气接口测试报告',
description=u'天气接口详情'

)
runner.run(suite)


原文地址:https://www.cnblogs.com/Amelia0201/p/10340797.html