Python做接口测试生成测试报告失败

一、先看看我的代码,一个简单的Demo

'''
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 unittest 执行
执行结果
三、于是用python来执行,但是执行不成功,报错信息如下图:
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)

这样就生成测试报告了:
生成的测试报告
点详情后的查看样式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值