Python做接口测试生成测试报告失败
2017-08-16 10:11
489 查看
一、先看看我的代码,一个简单的Demo
二、用python unittest执行,可以运行测试用例,但是无法生成测试报告,因为 ‘if name == “main“: ’下面的代码都没有执行,看图:
三、于是用python来执行,但是执行不成功,报错信息如下图:
四、期间各种分析原因,换了pycharm运行,包括其他方法:http://blog.csdn.net/xie_0723/article/details/50825310(这里提到的方法都试过)还是不行。
最后永别的又弄了一个简单案例,居然生成报告了,唯一的区别是那个用例没有用到数据驱动。代码如下:
生成的报告如下:
这里的样式是经过改进后的HTMLTestRunner的样式,喜欢的可以拿走用:http://pan.baidu.com/s/1miFp3vE
五、于是果断的把数据驱动去掉了,代码如下:
这样就生成测试报告了:
''' Created on 2017年8月11日 #登录接口参数化 @author: zx ''' import unittest import requests import ddt import HTMLTestRunner import time @ddt.ddt class Test(unittest.TestCase): def setUp(self): print('start') def tearDown(self): print('end') @ddt.data(('张想','123'), ('黄浩','123'), ('肖菊','123'), ('刘威','123')) @ddt.unpack def test_example(self,LoginName,Password): res=requests.get('http://192.168.50.51:8099/Logins/Login',params={'LoginName':LoginName,'Password':Password}) print(res.status_code) print(res.cookies) print(res.text) self.assertEqual(200,res.status_code) self.assertTrue('true' in res.text) if __name__ == "__main__": #定义一个测试容器 suite = unittest.TestSuite() #将测试用例添加到容器 suite.addTest(Test("test_example")) now = time.strftime("%Y-%m-%d %H_%M_%S",time.localtime()) filename='D:/Users/zx/workspace/AppiumDemo1/report/'+now+'_result.html' with open(filename, 'wb') as fp: runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行详情:') runner.run(suite)
二、用python unittest执行,可以运行测试用例,但是无法生成测试报告,因为 ‘if name == “main“: ’下面的代码都没有执行,看图:
三、于是用python来执行,但是执行不成功,报错信息如下图:
四、期间各种分析原因,换了pycharm运行,包括其他方法:http://blog.csdn.net/xie_0723/article/details/50825310(这里提到的方法都试过)还是不行。
最后永别的又弄了一个简单案例,居然生成报告了,唯一的区别是那个用例没有用到数据驱动。代码如下:
# coding=utf-8 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 #2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2016-7-27 @author: Jennifer Project:使用unittest框架编写测试用例思路 ''' #3.导入unittest模块 import unittest import HTMLTestRunner import time #4.定义测试类,父类为unittest.TestCase。 #可继承unittest.TestCase的方法,如setUp和tearDown方法,不过此方法可以在子类重写,覆盖父类方法。 #可继承unittest.TestCase的各种断言方法。 class Test(unittest.TestCase): #5.定义setUp()方法用于测试用例执行前的初始化工作。 #注意,所有类中方法的入参为self,定义方法的变量也要“self.变量” #注意,输入的值为字符型的需要转为int型 def setUp(self): #self.number=input('Enter a number:') #self.number=int(self.number) self.number=10 #6.定义测试用例,以“test_”开头命名的方法 #注意,方法的入参为self #可使用unittest.TestCase类下面的各种断言方法用于对测试结果的判断 #可定义多个测试用例 #最重要的就是该部分 def test_case1(self): print (self.number) self.assertEqual(self.number,10,msg='Your input is not 10') def test_case2(self): print (self.number) self.assertEqual(self.number,20,msg='Your input is not 20') @unittest.skip('暂时跳过用例3的测试') def test_case3(self): print (self.number) self.assertEqual(self.number,30,msg='Your input is not 30') #7.定义tearDown()方法用于测试用例执行之后的善后工作。 #注意,方法的入参为self def tearDown(self): print ('Test over') #8如果直接运行该文件(__name__值为__main__),则执行以下语句,常用于测试脚本是否能够正常运行 if __name__=='__main__': #8.1执行测试用例方案一如下: #unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们。 #执行顺序是命名顺序:先执行test_case1,再执行test_case2 #unittest.main() suite=unittest.TestSuite() suite.addTest(Test('test_case2')) suite.addTest(Test('test_case1')) now = time.strftime("%Y-%m-%d %H_%M_%S",time.localtime()) filename='D:/'+now+'_result.html' with open(filename, 'wb') as fp: runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行详情:') runner.run(suite)
生成的报告如下:
这里的样式是经过改进后的HTMLTestRunner的样式,喜欢的可以拿走用:http://pan.baidu.com/s/1miFp3vE
五、于是果断的把数据驱动去掉了,代码如下:
''' Created on 2017年8月16日 @author: zx ''' import unittest import requests import HTMLTestRunner import time class Test(unittest.TestCase): def setUp(self): print('start') def tearDown(self): print('end') def test_example(self): res=requests.get('http://192.168.50.51:8099/Logins/Login',params={'LoginName':"张想",'Password':'123'}) print(res.status_code) print(res.cookies) print(res.text) self.assertEqual(200,res.status_code) self.assertTrue('true' in res.text) if __name__=='__main__': #8.1执行测试用例方案一如下: #unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们。 #执行顺序是命名顺序:先执行test_case1,再执行test_case2 #unittest.main() suite=unittest.TestSuite() suite.addTest(Test('test_example')) now = time.strftime("%Y-%m-%d %H_%M_%S",time.localtime()) filename='D:/'+now+'_result.html' with open(filename, 'wb') as fp: runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行详情:') runner.run(suite)
这样就生成测试报告了:
相关文章推荐
- python单元测试同时生成自动化测试报告
- Selenium(Python)生成Html测试报告
- Python模块学习之HTMLTestRunner生成测试报告
- python--selenium实用的自动生成测试HTML报告方法--HTMLTestRunner
- Python基础(六) python生成xml测试报告
- pycharm执行python文件无法生成测试报告(appium自动化测试)
- Python单元测试框架Pytest——如何生成测试报告
- Python模块学习之HTMLTestRunner生成测试报告
- python--selenium一种实用的自动生成测试HTML报告方法--HTMLTestRunner
- python使用 HTMLTestRunner.py生成测试报告
- Python单元测试框架之pytest -- 生成测试报告
- python调用HTMLTestRunner+unittest实现一次执行多个测试类,并生成与每个测试类对应的测试报告,并不像某些人写的每次只执行一个测试类,具体看代码,附上整个project代码
- Python之使用unittest框架和HTMLTestRunner.py文件实现多个测试用例执行与测试报告生成
- python+selenium 生成测试报告
- Python+Selenium框架设计篇之11-自动化测试报告的生成
- python selenium-webdriver 生成测试报告 (十四)
- python3 调用HTMLTestRunner生成测试报告 同时打印测试进程
- Python发送邮件以及自动化测试报告的生成