ps:遇到一次报错:
TypeError: TestHttpRequest () takes no arguments。
原因是在创建类
class TestHttpRequest(unittest.TestCase):
时忘了括号内继承(unittest.TestCase)。
单元测试报告
HTMLTestRunner是Python标准库unittest单元测试框架的一个扩展,它生成易于使用的HTML测试报告。
下载地址如下:
http://tungwaiyip.info/software/HTMLTestRunner.html
这个扩展非常简单,只有一个HTMLTestRunner.py文件,保存到本地后,将其复制到Python安装目录(lib文件夹)下即可。
首先创建一个request类:
__author__ = 'Hello'
import requests
class HttpRequest:
def Get(self,url,data):
try:
response=requests.get(url,data)
return response.json()
except Exception as e:
print("Get请求出错啦!%s"%e)
raise e
def Post(self,url,data):
try:
response=requests.get(url,data)
return response.json()
except Exception as e:
print("Post请求出错啦!%s"%e)
raise e
if __name__=="__main__":
url="http://v.juhe.cn/laohuangli/d"
data={"key":"a8f2732319cf0ad3cce8ec6ef7aa4f33","date":"2016-05-20"}
result=HttpRequest().Get(url,data)
print(result)
随后创建一个测试类:
__author__ = 'Hello'
import unittest
from class_unittest.class_http.httpp_request import HttpRequest
class TestHttpRequest(unittest.TestCase):
def setUp(self):
print("测试开始咯!")
self.url="http://v.juhe.cn/laohuangli/d"
self.data={"key":"a8f2732319cf0ad3cce8ec6ef7aa4f33","date":"2016-05-20"}
def test_get(self):
try:
http_request=HttpRequest()
result=http_request.Get(self.url,self.data)
self.assertEqual(0,result['error_code'],"Get请求出错了")
print(result)
except AssertionError as e:
print("捕捉到Get请求的断言错误时%s"%e)
raise e
def test_post(self):
try:
http_request=HttpRequest()
result=http_request.Get(self.url,self.data)
self.assertEqual(0,result['error_code'],"Post请求出错了")
print(result)
except AssertionError as e:
print("捕捉到Post请求的断言错误时%s"%e)
raise e
def tearDown(self):
print("测试结束咯!")
最后创建一个suite:
import unittest
from class_unittest.class_http.test_http_request import TestHttpRequest
import HTMLTestRunnerNew
import time
suite=unittest.TestSuite()
suite.addTest(TestHttpRequest("test_get"))
suite.addTest(TestHttpRequest("test_post"))
now=time.strftime('%Y-%m-%d_%H_%M_%S')
filepath='PythonTestReport'+now+'.html'
fp=open(filepath,'wb')
#执行测试并生成测试报告
runner=HTMLTestRunnerNew.HTMLTestRunner(stream=fp,title="1017单元测试",verbosity=2)
runner.run(suite)
fp.close()