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來執行,但是執行不成功,報錯資訊如下圖:
四、期間各種分析原因,換了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介面自動化測試--利用unittest生成測試報告(第四目)Python測試報告
- 介面自動化使用requests生成測試報告測試報告
- TestNG測試框架之失敗測試重跑框架
- allure生成測試報告 0 NAN%測試報告NaN
- jmeter無圖形介面執行測試並生成報告JMeter
- 走進Java介面測試之測試報告ExtentReportJava測試報告
- 測試計劃和測試報告測試報告
- 介面測試怎麼做
- JMeter 做介面加密測試JMeter加密
- 為什麼要做介面測試?可做介面測試的軟體測試公司分享
- Pytest單元測試框架生成HTML測試報告及優化框架HTML測試報告優化
- pytest(11)-Allure生成測試報告(一)測試報告
- Jmeter 介面自動化連載 (13) - 自動生成測試報告JMeter測試報告
- 黑羽壓測 做 API介面功能測試API
- 為 java 開發者設計的效能測試框架,用於壓測+測試報告生成Java框架測試報告
- Jumper 測試報告測試報告
- 雲測試報告測試報告
- Redis測試報告Redis測試報告
- Bacula測試報告測試報告
- Allure測試報告測試報告
- 介面測試測試流程
- Python單元測試框架pytest常用測試報告型別Python框架測試報告型別
- 技術週刊 · Lighthouse 測試報告生成測試報告
- 使用Postman工具做介面測試(五)——生成隨機引數Postman隨機
- 軟體壓力測試怎麼做?出具壓力測試報告軟體測評中心測試報告
- 測試總結報告
- redis效能測試報告Redis測試報告
- Green Plum測試報告測試報告
- 滲透測試報告測試報告
- API 測試 | 瞭解 API 介面測試 | API 介面測試指南API
- 【軟體測試】——介面測試
- Jmeter介面測試+效能測試JMeter
- 介面測試 - 引數測試
- jenkins+pytest+allure 介面測試生成報告只顯示第一次的測試結果Jenkins
- API測試:瞭解API介面測試與API介面測試指南API
- Cypress系列(65)- 測試執行失敗自動重試
- jmeter介面測試教程以及介面測試流程JMeter
- 介面測試(apipost、jmeter和python指令碼)——測試工具APIJMeterPython指令碼