AMcoder - javascript, python, java, html, php, sql

Նշեք կազմաձևման կարգավորումները pytest թեստի համար

Ես կառավարում եմ իմ կազմաձևումը Python հավելվածի համար https://github.com/theskumar/python-dotenv և ես օգտագործում եմ pytest-ը իմ թեստերի համար:

Թեստերի որոշակի փաթեթի համար ես ուզում եմ հատուկ կազմաձևում, որը հատուկ է յուրաքանչյուր թեստի համար: Այժմ ես գիտեմ https://github.com/quiqua/pytest-dotenv մասին, որը տալիս է ինձ հնարավորություն է սահմանել կոնֆիգուրացիա յուրաքանչյուր միջավայրի համար (prod/test), բայց ես ուզում եմ ավելի մանրահատիկություն յուրաքանչյուր թեստի հիման վրա: Մինչ այժմ ես դա կարգավորել եմ՝ ծաղրելով Config օբյեկտը, որը պարունակում է իմ ամբողջ կոնֆիգուրացիան: Սա խառնաշփոթ է, քանի որ յուրաքանչյուր թեստի համար ես պետք է ծաղրեմ այս Config օբյեկտը յուրաքանչյուր մոդուլի համար, որտեղ այն բեռնված է:

Իդեալում, ես կունենայի նման բան.

def test_1(config):
    config.foo = 'bar'
    run_code_that_uses_config()

def test_2(config):
    config.foo = 'bleh'
    run_code_that_uses_config()

18.10.2019

Պատասխանները:


1

Ես վերջապես օգտագործեցի monkeypatch-ը և գնացի այս մոտեցմամբ.

from my_library.settings import Config

@pytest.fixture
def config(monkeypatch):
    monkeypatch.setattr(Config, 'foo', 'bar')
    return Config


def test_1(config, monkeypatch):
    monkeypatch.setattr(config, 'foo', 'some value specific to this test')
    run_code_that_uses_config()

monkeypatch-ի միջոցով ես կարողացա անցնել Config օբյեկտի շուրջը pytest սարքի միջոցով՝ լռելյայն ստեղծելու և յուրաքանչյուր թեստի համար այն անտեսելու համար: Կոդը, որն օգտագործում է կազմաձևը, կարողացավ ընդունել փոփոխությունը: Նախկինում ես օգտագործում էի patch_ը ստանդարտ mock գրադարանից, բայց ես պետք է կարկատեի յուրաքանչյուր տեղ, որտեղ որոնված էր կազմաձևը (https://docs.python.org/3/library/unittest.mock.html#where-to-patch), որը կատարել է սպասարկում դժվար.

19.10.2019
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..