Bezogen auf Python unit testing code which calls OS/Module level python functions. Während meines Komponententests überhöhere ich einige Python-Systemaufrufe, um meine Tests dazu zu bringen, verschiedene Pfade eines Moduls zu steuern. Diese Technik namens Monkey Patch (in der verwandten Frage) für Tests isoliert.Python-Unit-Test überschreibt Module Level-Funktionen
Ich bin ein bisschen besorgt darüber, was passiert, wenn ich Python-Tests parallel laufen lasse wie in "Nose". Was passiert, wenn zwei Tests parallel ausgeführt werden und beide die os.path.exists-Methode vortäuschen möchten?
Gibt es eine Möglichkeit, eine System- oder Modulfunktion im Kontext meines Tests selektiv zu überschreiben?
Nehmen Sie das folgende Beispiel für
fixture.py (say that is the module under test)
def my_func():
some_stuff
test_fixture.py (say this is my test case)
class MyTest(unittest.TestCase):
def test_mine(self):
fixture.my_func = my_new_func
fixture.execute_some_func_that_calls_my_func()
#What happens if another test is executing at the same time and accesses
#my_func I don't want it to start executing my_new_func?
Was ist der Name_getter hier? Ist es das Modul, in dem sich die Klasse TestNameGetter befindet? –
Ja, tut mir leid, ich habe die Antwort unter http://StackOverflow.com/questions/14956825/python-unit-testing-code-which-calls-os-module-level-python-functions als Beispiel verwendet. Lassen Sie mich mein Beispiel aktualisieren, um klarer zu sein. –
Ja was passiert, wenn ZWEI Tests parallel ausgeführt werden, die das selbe name_getter Modul treffen und wenn beide verschiedene raw_input Funktionen haben wollen? Funktioniert das noch? –