自动化脚本设计思路
测试数据管理
测试数据采用.py文件的形式做管理,整体想法是一个date文件存接口和参数,一个key文件存公共的key,方便在取值时使用。
date文件样式:
from data.keys import answer_key
from data.data import eve
import random
import string
import os
keys = answer_key.AnswerKeys()
static_path = os.path.split(os.path.abspath(__file__))[0] + '\static'
keys = answer_key.AnswerKeys()
class AnswerData(object):
data = {
keys.publish: {
"url": eve.server + "/post/publish",
"data": [
('authorId', (None, eve.user_id)),
('subject', (None, 'CAD可以3D打印吗?')),
('bodyText', (None, 'CAD可以3D打印吗')),
('postType', (None, 'QA')),
('coins', (None, '20')),
]
}
key文件样式
class AnswerKeys(object):
detail = "detail"
ads = "ads"
top_activity_users = "top_activity_users"
search = "search"
followed_qa = "followed_qa"
followed = "followed"
top_navigation = "top_navigation"
is_like = "is_like"
reply = "reply"
new_reply_list = "new_reply_list"
recommend = "recommend"
adopt_answer = "adopt_answer"
chat = "chat"
delete_replay = "delete_replay"
qa = "qa"
records = "records"
is_followed_qa = "is_followed_qa"
search_self = "search_self"
publish = "publish"
- 接口调用
接口调用主要是单接口进行调用
api文件:
class PayAnswer(object):
def __init__(self):
self.order_id = None
@allure.step("发布付费答疑")
def publish(self, user_id):
api = pay_answer_data.data.get(pay_answer_keys.publish)
api["url"] = api["url"].format(user_id=user_id)
res = url.get(api)
if res:
return res.get("ret")
@allure.step("审核通过付费答疑")
def approve(self, pay_answer_id):
api = pay_answer_data.data.get(pay_answer_keys.change_audit_status)
api["url"] = api["url"].format(pay_answer_id=pay_answer_id)
return url.get(api)
@allure.step("修改付费答疑")
def modify(self, pay_answer_id):
api = pay_answer_data.data.get(pay_answer_keys.modify)
api["url"] = api["url"].format(pay_answer_id=pay_answer_id)
url.get(api)
- 业务整合
也就是集成测试
@allure.testcase("购买答疑流程")
def test_buy(self):
global price
if pay_answer_id:
pay_answer_order_id = pay_answer.place(pay_answer_id)
if pay_answer_order_id:
pay_answer.open(pay_answer_id)
price = pay_answer.order_info(pay_answer_order_id)
pay_answer.payment(pay_answer_order_id, price)
pay_answer.accept(pay_answer_order_id)
pay_answer.complete(pay_answer_order_id)
pay_answer.vote(pay_answer_order_id)
pay_answer.votes(pay_answer_id)
pay_answer.list_customer()
pay_answer.list_expert(user_id)
pay_answer.pay_answer_orders(pay_answer_id)
pay_answer.payanswer_order(pay_answer_order_id)
else:
error.error_message("订单未生成,或订单详情接口错误")
else:
error.error_message("未开通答疑")
- 断言
目前断言只有简单的断言,还没有找到合适的断言方式 - 执行
- 报告产出
集成到Jenkins
配置构建
cd D:\pycharm\jishulinktest\testscripts
python -m pytest -s -q --alluredir "D:\Program Files (x86)\Jenkins\workspace\jishulinkAPI\allure-results"