Создание PyTest REST API req в l oop с различными утверждениями (Python) - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть следующий код, где я анализирую YAML, чтобы получить содержимое, необходимое для запроса PyTest. Я успешно вытащил контент.

#Conenct to DB pull YML

mycur1 = cnx.cursor()
descselector1 = ("select des from t_uc;")
mycur1.execute(descselector1)
descr1 = mycur1.fetchall() ##Gives us the list of tuples
#print(descr1)
mycur2 = cnx1.cursor()
CSIdselector = ("select * from r_cnt_se_i_map;")
mycur2.execute(CSIdselector)
CSIDmapping =  mycur2.fetchall()
print(CSIDmapping)
class PSLoader(yaml.SafeLoader):
    pass

def constructor(loader, node):
    return loader.construct_mapping(node)

# to handle the custom tag
PSLoader.add_constructor(
    'tag:yaml.org,2002:c.tcs.ucm.model.uCCo.Cig',
    constructor
)

for entry, in desc1:
    parsed = yaml.load(entry, Loader=PSLoader)

    try:
        mt = parsed['requests'][0]['param']['mt']
        num = parsed['requests'][0]['param']['num']
        aMB = parsed['requests'][0]['param']['aMB']
        uc = parsed['uC'][0]['ucId']

        cSId = parsed['requests'][0]['param']['cSId']
        for i in cSId:
            if cSId == ['10']:
                EId = cnx1.cursor(buffered=True)
                GetRandomEId = (
                    "select id from Etable order by rand() limit 1;")
                EID.execute(GetRandomEId)
                for row in EID:
                    RandomEId = (row[0])
                    print("10>>RandomEId>>", RandomEId)

            elif cSId == ['11']:
                VID = cnx1.cursor(buffered=True)
                GetRandomVId = (
                    "select id from Vtable order by rand() limit 1;")
                VID.execute(RandomVId)
                for row in VID:
                    RandomVId = (row[0])
                    print("11>>RandomVId>>", RandomVId)

            elif cSId == ['12']:
                PID = cnx1.cursor(buffered=True)
                GetRandomPId = (
                    "select id from Ptable order by rand() limit 1;")
                PID.execute(GetRandomPId)
                for row in PID:
                    RandomPId = (row[0])
                    print("12>>RandomPId>>", RandomPId)

            elif cSId == ['13']:
                RId = cnx1.cursor(buffered=True)
                GetRId = (
                    "select id from Rtable order by rand() limit 1;")
                RId.execute(GetRId)
                for row in RId:
                    RId = (row[0])
                    print("13>>RId>>", RId)

        test_list = (mt, cSId, num, aMB, uc) 
        print(test_list)
    except KeyError:
        pass

приведенный выше кодовый блок дает такой код:

12>>PId>> b03433232321211s35ck
('getmt1', ['12'], 1, F, 'iP/hPg/PFYo')
11>>>> eqerefcdap07rd3lx
('getmt2', ['11'], 2, F, 'isP/hPg/VFYo')
13>>>> eqeeeqerefcdap07rd3lx
('getmt3', ['13'], 2, F, 'isP/hPg/V_FY_o')
('getmt4', ['13'], 12, F, 'isP/hPg/VFYo')
('getmt5', ['11', '12'], 32, F, 'is-P/hPg/V-FY-o')

Планирование использовать этот OP в Excel для справки.

Теперь не уверен, как использовать вышеуказанный OP в l oop для создания запроса PyTest [с U C и их csID в req param], имеющего одно утверждение, заключенное в одну функцию.

#create pytest requests
def test_allAPIsResponse():
            fURL = (http://<host>/cm/api/' + urllib.parse.quote_plus(uc)) 
#pass all usecase in loop here with their own req param in req_json
            headers = {'Accept': "application/json", 'Content-Type': "application/json", 'Accept-Encoding': "gzip, deflate",
                       'Cache-Control': "no-cache", 'Token': "null"}
            req_json = "{ "reqP\": { "cIid\":[\"[csID]<VID or PID or RID>"], "num": num, "aMB": aMB }}" 
#need to pass cSId here in req_json
            uid = {"userId": "Test1"}
            response = requests.request("POST", fURL, data=req_json, headers=headers, params=uid)
            jsondata = json.loads(response.content)
            assert response.status_code == 200, "Test pass"

def test_allAPIsResponseCont():
            fURL = (http://<host>/cm/api/' + urllib.parse.quote_plus(uc))
            headers = {'Accept': "application/json", 'Content-Type': "application/json", 'Accept-Encoding': "gzip, deflate",
                       'Cache-Control': "no-cache", 'Token': "null"}
            req_json = "{ \r\n\"reqP\": { \r\n \"cIid\":[\"<VID or PID or RID>\"] \r\n } \r\n}" 
#no need to pass cSId here
            uid = {"userId": "Test1"}
            response = requests.request("POST", fURL, data=req_json, headers=headers, params=uid)
            jsondata = json.loads(response.content)
            assert jsondata["rec"]["recO"]["recOO"][0]["csID"] == 1

Я новичок ie, поэтому открыт для альтернативного подхода или предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...