Pytest afirmația de eroare este blocarea test de execuție

0

Problema

Am urmatorul cod care citește date de pe un hdd extern excel și a lovit bara de cerere, dar ori de câte ori am întâlnit o afirmație de eroare cu 1 rând în set de date din excel, pentru bucla se opreste si restul de excel rânduri nu sunt luate pentru execuție. La execuția programului se oprește la acest punct. Cum de a depăși acest lucru? Cerința mea este daca din 10 set de date(10 rânduri în excel), afirmația eșuează în a 5-a de exemplu, ar trebui să execute programul cu restul de seturi de date și la sfârșitul marca caz de test de execuție, nu a REUȘIT.

def test_1A():

url_plan = getCOnfigurations()['API']['URL'] + APIResources.endpoints_plans
classic_sum_values = [200000, 300000, 400000]
payload_plan = open('C:/Users/aprat/PycharmProjects/RSAHealthPytest/PayLoads/plans/1A.json','r')
json_payload_plan = json.loads(payload_plan.read())

obj = Library.BaseClass("C:/Users/aprat/PycharmProjects/RSAHealthPytest/TestData/1A/TestData1A.xlsx","sheet1")
col = obj.fetch_column_count()
row = obj.fetch_row_count()
key_age = obj.fetch_key_names()
key_dob = obj.fetch_key_names()
key_sum = obj.fetch_key_names()
key_ten = obj.fetch_key_names()
key_pr_mem_age = obj.fetch_key_names()

for i in range(2, row+1):
    datadriven_json_data_plan = obj.update_request_with_data_plan1A(i,json_payload_plan,key_age,key_dob,key_pr_mem_age,key_sum,key_ten)
    a1_age = json_payload_plan['payload']['data']['insured'][0]['age']
    a1_dob = json_payload_plan['payload']['data']['insured'][0]['dob']
    prim_mem_age = json_payload_plan['payload']['data']['primary_member_age']
    tot_sum = json_payload_plan['payload']['data']['sum_insured']
    tenure = json_payload_plan['payload']['data']['tenure']
    response = requests.post(url_plan, json=datadriven_json_data_plan,)
    json_response_plan = response.json()
    print(json_response_plan)
    if int(tenure) == 1 or int(tenure) == 2 or int(tenure) == 3:
        if int(tot_sum) in classic_sum_values:
            if int(18) <= int(a1_age) <= int(50):
                print(json_response_plan[0]['article_code'])
                try:
                    assert int(json_response_plan[0]['premium']) > int(1)
                    assert int(json_response_plan[0]['term']) == int(tenure)
                    assert int(json_response_plan[0]['validity']) == int(tenure)
                    assert int(json_response_plan[0]['sa']) == int(tot_sum)
                except Exception as e:
                    json_data = datadriven_json_data_plan
                    sys.stdout = open("plans_classic_1A.log", "a")
                    _, _, tb = sys.exc_info()
                    traceback.print_tb(tb)
                    tb_info = traceback.extract_tb(tb)
                    filename, line, func, text = tb_info[-1]
                    print('An error occurred on line {} in statement {}'.format(line, text))
                    print("Test failure due to assertion error")
                    print("adult1 age=" + " " + str(a1_age))
                    print("sum insured=" + " " + str(tot_sum))
                    print("tenure=" + " " + str(tenure))
                    print(json.dumps(json_data, indent=2))
                    print("**************************************************************************")
                    raise e
api automation pytest python
2021-11-23 17:28:41
1

Cel mai bun răspuns

0

Problema este că sunteți ridicarea de eroare, permițându-i să treacă pe dinafară. Elimina raise e linie la sfarsit de cod și se adaugă un fel de eroare de manipulare/exploatare forestieră să treacă printr-un raport.

O listă pe care îl adăugați este, probabil, cea mai simplă soluție, dar folosind Python logging pachetul va fi o mai bună soluție pe termen lung.

Edit: bazat pe dumneavoastră comentariu anterior, a stabilit un steag care implicit este True/succes. Dacă nu o dată, acesta este automat setată la False/eșec.

De exemplu:

def test1a():
    successFlag = True
...
    except Exception as e:
        successFlag = False

    return successFlag

2021-11-23 19:31:46

eliminarea ridica e linie, dar în acel moment toată test de execuție se arată ca să TREACĂ în raportul de încercare care este înșelătoare.
Apratim Chaudhuri

Adăugat un edit cu un steag pentru a urmări.
Alex D

Această abordare nu funcționează pentru mine. După execuție, testare caz de stare este afișat ca a TRECUT
Apratim Chaudhuri

Nimic din codul arată unde vă setați pass/fail funcționalitate - vă rugăm să furnizați detalii suplimentare dincolo "este faptul că nu".
Alex D

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................