python自动测试r_Python自动化测试框架

Python+unittest+requests+HTMLTestRunner框架

1 目录说明

common:公共文档,存放包含HTMLTestRunner.py,logUtils.py等公用文件

data:数据文档,存放测试数据;接口数据使用excel存储

log:存放日志文件

report:存放测试报告

page:编写模块对象层的代码,即把模块公共的方法封装成对象以供调用

testCase:测试用例代码,按照模块划分

runTest:执行所有测试用例的文件项目目录

2 common

#helper.py

#helper.py

import os, xlrd, json, demjson, unittest

class 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中数据并且返回

:params filepath :xlsx文件名称

:params rowx:在excel中的行数

'''

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所在的行数

'''

return self.read_excel(rowx)[1]

def get_data(self,rowx):

'''

获取请求数据

:params rowx:url所在的行数

'''

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文件在网上找自己喜欢的格式下载放到目录即可

3 page

#user.py

import requests

def getHeaders(Authorization=""):

'''返回请求头'''

headers = {"Content-Type": "application/json", "Authorization": Authorization}

return headers

def post(url,params={},data={}):

'''对post二次封装'''

r = requests.post(

url=url,

headers=getHeaders(),

timeout=6,

json=data,

params=params

)

return r

def get(url,params={},data={}):

'''对get二次封装'''

r = requests.get(

url=url,

headers=getHeaders(),

timeout=6,

json=data,

params=params

)

return r

if __name__ == '__main__':

print(getHeaders())

4 testCase

#test_user.py

from page.user import *

from common.helper import *

class TestUser(unittest.TestCase,Helper):

@classmethod

def setUpClass(cls):

print("start===============!")

@classmethod

def 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'])

@property

def 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 xq

import unittest

import os

from common import HTMLTestRunner

from common.helper import Helper

from common.logUtils import LogUtils

import time

def getSuites():

suites = unittest.defaultTestLoader.discover(

start_dir=os.path.join(os.path.dirname(__file__),'testCase'),

pattern='test_*.py',

top_level_dir=None

)

return suites

def 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='自动化测试报告',

description='自动化测试详细的报告'

).run(getSuites())

LogUtils.log().info('测试结束,生成基于HTML的测试报告')

if __name__ == '__main__':

run()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值