pythonによるインタフェーステストの自動化(pytest、requestsを使用)
10096 ワード
import pytest
import requests
import json
import hashlib
import random
import webbrowser
#@pytest.fixture ,
@pytest.fixture(scope='function')
# test_ ,
def a():
# 1234567 9999999
rand = str(random.randrange(1234567,9999999))
# md5 , utf-8,
md5_1 = bytes(rand + 'XX',encoding='utf-8')
#md5 , ,hexdigest
sign = hashlib.md5(md5_1).hexdigest()
# url
url = 'url?sign='+sign+'&randomStr='+rand
print(url)
# url
webbrowser.open(url,new=0)
#
return rand
#@pytest.mark.parametrize ,@pytest.mark.parametrize( , ) ,
@pytest.mark.parametrize(('communityId','companyId','visitTime'),[('14336334','52','2020-05-18'),('14336334','78','2020-05-19')])
#a a()
def test_b(a,communityId,companyId,visitTime):
visitors = """[{"name": " ", "phone": "16020002021", "idcard": "610321199208245019",
"idcardPic": " url.png"}]"""
#
md5_m = bytes(communityId + companyId + visitTime + visitors,encoding='utf-8')
m = hashlib.md5(md5_m).hexdigest()
# url
url = 'url'
# data
data = {
'communityId': communityId,
'companyId': companyId,
'visitTime': visitTime,
'visitors': visitors,
'sign': m,
'randomStr': a,
}
print(data)
# requests post
req = requests.post(url,data)
#
print(req.json())
# ,
assert req.json()['status'] == 200
assert req.json()['data']['visitors'][0]['phone'] == '16020002021'
def test_c(a):
print(a)
# main
if __name__ == '__main__':
pytest.main(['-s','./test_case'])