python ui自动化测试框架_Python自动化测试框架
生活随笔
收集整理的這篇文章主要介紹了
python ui自动化测试框架_Python自动化测试框架
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Python+unittest+requests+HTMLTestRunner框架
1 目錄說明
common:公共文檔,存放包含HTMLTestRunner.py,logUtils.py等公用文件
data:數(shù)據(jù)文檔,存放測試數(shù)據(jù);接口數(shù)據(jù)使用excel存儲
log:存放日志文件
report:存放測試報(bào)告
page:編寫模塊對象層的代碼,即把模塊公共的方法封裝成對象以供調(diào)用
testCase:測試用例代碼,按照模塊劃分
runTest:執(zhí)行所有測試用例的文件
項(xiàng)目目錄2 common
#helper.py
#helper.pyimport os, xlrd, json, demjson, unittestclass Helper(object):'''公共方法'''def base_dir(self,filename,folder='data'):'''返回文件路徑params filename:文件名稱params folder:文件夾 '''return os.path.join(os.path.dirname(__file__),os.path.pardir, folder, filename)def read_excel(self,rowx,filename='data.xlsx'):''':return:讀取excel中數(shù)據(jù)并且返回:params filepath :xlsx文件名稱:params rowx:在excel中的行數(shù)'''book = xlrd.open_workbook(self.base_dir(filename))sheet = book.sheet_by_index(0)return sheet.row_values(rowx)def get_url(self,rowx):'''獲取請求地址:params rowx:url所在的行數(shù)'''return self.read_excel(rowx)[1]def get_data(self,rowx):'''獲取請求數(shù)據(jù):params rowx:url所在的行數(shù)'''return demjson.decode(json.loads(demjson.encode(self.read_excel(rowx)[2], encoding='utf-8')))if __name__ == '__main__':t = Helper()print(t.get_url(1))print(t.get_data(1))HTMLTestRunner.py,logUtils.py文件在網(wǎng)上找自己喜歡的格式下載放到目錄即可
3 page
#user.py
import requestsdef getHeaders(Authorization=""):'''返回請求頭'''headers = {"Content-Type": "application/json", "Authorization": Authorization}return headersdef post(url,params={},data={}):'''對post二次封裝'''r = requests.post(url=url,headers=getHeaders(),timeout=6,json=data,params=params)return rdef get(url,params={},data={}):'''對get二次封裝'''r = requests.get(url=url,headers=getHeaders(),timeout=6,json=data,params=params)return rif __name__ == '__main__':print(getHeaders())4 testCase
#test_user.py
from page.user import * from common.helper import *class TestUser(unittest.TestCase,Helper):@classmethoddef setUpClass(cls):print("start===============!")@classmethoddef tearDownClass(cls):print("end===============!")def test_user_001(self):'''登錄'''r = post(self.get_url(1), params=self.get_data(1))print(r.json())self.assertEqual(r.json()['code'],200)self.assertIn('token',r.text)with open(self.base_dir('pctoken'),'w',encoding='utf-8') as f:f.write(r.json()['data']['token'])@propertydef getPctoken(self):'''獲取成功登錄的token'''with open(self.base_dir('pctoken'), 'r', encoding='utf-8') as f:return f.read()if __name__ == '__main__':unittest.main(verbosity=2)5 runTest
#!/usr/bin/env python #author xqimport unittest import os from common import HTMLTestRunner from common.helper import Helper from common.logUtils import LogUtils import timedef getSuites():suites = unittest.defaultTestLoader.discover(start_dir=os.path.join(os.path.dirname(__file__),'testCase'),pattern='test_*.py',top_level_dir=None)return suitesdef getNowTime():return time.strftime('%y-%m-%d-%H-%M-%S',time.localtime())def run():report_filename = Helper().base_dir(folder='report', filename=getNowTime()+'report.html')HTMLTestRunner.HTMLTestRunner(stream=open(report_filename,'wb'),verbosity=2,title='自動化測試報(bào)告',description='自動化測試詳細(xì)的報(bào)告').run(getSuites())LogUtils.log().info('測試結(jié)束,生成基于HTML的測試報(bào)告')if __name__ == '__main__':run()總結(jié)
以上是生活随笔為你收集整理的python ui自动化测试框架_Python自动化测试框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: decimal是什么类型_SQLMysq
- 下一篇: 2020年度工作计划_2020最新年度个