------------------------------Day 1-----------------------------------------------------
1.下载本地安装包: PyPI · The Python Package Index
pytest-7.1.2.tar.gz
allure-pytest-2.9.45.tar.gz
解压下载好的tar.gz文件进行安装:
对应目录文件夹执行命令即可:python setup.py install
2.下载配置文件:Releases · allure-framework/allure2 · GitHub
allure-2.13.8.zip
解到python目录,进行配置
配置后CMD,看看配置是否成功
3.IDE查看一下是否安装成功
4.执行一下pytest用例: Pytest_Demo.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pytest
import allure
@allure.feature("test")
class Test_SWapi():
'''运行Py-test执行用例:pytest -vs Pytest_Demo.py '''
def setup(self):
self.url_member = 'http://member-service.xxx.cn'
self.App_token = token()
self.php_token = token_E()
url_prod = 'http://marketing-service.xxx.com/login/user?email=xxx@xxx.cn&password=gao123456'
Res_prod = requests.get(url_prod)
url_tokenid_E = 'xxx.securityservice.tokenid=' + Res_prod.json()["data"]["tokenID"]
self.header_token_prod = {'Content-Type': 'application/json',
'Cookie': url_tokenid_E,
'User-Agent': 'Dalvik/2.1.0'}
def teardown(self):
pass
@allure.story("001")
def test_member_login(self):
url = self.url_member + '/member/member/get?memberCode=5102252'
Res = requests.get(url,headers=self.App_token)
assert Res.status_code == 200
def test_member_loginA(self):
url = self.url_member + '/member/login'
data = {
"deviceId": "123123123",
"identity": "13763312225",
"identityType": 0,
"password": "111111",
"platformSource": "Mall",
"remember": 'true',
"terminalType": "PC"
}
Res = requests.post(url,data=json.dumps(data),headers = self.php_token )
assert Res.status_code == 200
def teSst_UartisanUser(self):
'''更新名匠商家后台密码'''
self.url_security = 'http://security-service.xxx.com'
phone =''
security_token = self.header_token_prod
url_getList = self.url_security + '/security/user/getList'
data_getList = {
"pager": {
"now": 0,
"size": 1,
"total": 1
},
"search": [
{
"name": "phone",
"value": phone
}
],
"sort": [
{
"asc": 'true',
"name": "string"
}
]
}
Res_A = requests.post(url=url_getList,
data=json.dumps(data_getList),
headers = security_token)
userCode = Res_A.json()['data']['list'][0]['userCode']
userName = Res_A.json()['data']['list'][0]['userName']
departmentCode = Res_A.json()['data']['list'][0]['departmentCode']
employeeCode = Res_A.json()['data']['list'][0]['employeeCode']
email = Res_A.json()['data']['list'][0]['email']
password = '123456'
url_update = self.url_security + '/security/user/update'
data_update = {
"departmentCode": departmentCode,
"email": email,
"employeeCode": employeeCode,
"password": password,
"phone": phone,
"userCode": userCode,
"userName": userName
}
Res_B = requests.post(url=url_update,
data=json.dumps(data_update),
headers =security_token )
print(Res_B.json())
def test_link_center(self):
result = requests.get(self.url_member + '/member/center/get',
headers= self.App_token)
assert result.status_code == 200
def test_link_pointFlowHead(self):
result = requests.get(self.url_member + '/member/center/pointFlowHead',
headers= self.App_token)
assert result.status_code == 200
@pytest.mark.parametrize('phone',
['13763312225',
'13247026377',
'13577798350'])
def test_getByPhone(self,phone):
# 用例参数化
result = requests.get(self.url_member + '/member/member/getByPhone?phone='+phone,
headers=self.php_token)
assert result.status_code == 200
@pytest.fixture()
def getLogin_fixture(self):
RBG = {
"pager": {
"now": 0,
"size": 1,
"total": 1
},
"search": [
{
"name": "phone",
"value": "13763312225"
}
],
"sort": [
{
"asc": '',
"name": "string"
}
]
}
return RBG
@pytest.mark.xfail(reason = 'xfail api')
def test_getLogin_xfail(self,getLogin_fixture):
result = requests.post(self.url_member + '/member/member/getLogin',
data=json.dumps(getLogin_fixture), headers=self.php_token)
assert result.status_code == 200
@pytest.mark.skip(reason = 'skip api')
def test_getLogin_skip(self,getLogin_fixture):
result = requests.post(self.url_member + '/member/member/getLogin',
data=json.dumps(getLogin_fixture), headers=self.php_token)
assert result.status_code == 200
@pytest.mark.unfinished
def test_getLogin_unfinished(self,getLogin_fixture):
'''标记,unfinished不执行用例'''
result = requests.post(self.url_member + '/member/member/getLogin',
data=json.dumps(getLogin_fixture), headers=self.php_token)
assert result.status_code == 200
def test_getLogin_raises(self,getLogin_fixture):
with pytest.raises(TypeError) as f:
result = requests.post(self.url_member + '/member/member/getLogin',
data=json.dumps(getLogin_fixture), headers=self.php_token)
exec_msg = f.value.args[0]
assert exec_msg == '123'
def test_getLogin_fixture(self,getLogin_fixture):
print(getLogin_fixture)
result = requests.post(self.url_member + '/member/member/getLogin',
data=json.dumps(getLogin_fixture), headers=self.php_token)
print(result.json())
pytest -s Pytest_Demo.py --alluredir report
生成Html报告,并清楚之前的数据
allure generate --clean report
保存测试报告
allure serve report
默认访问地址:http://localhost:60684/index.html#



