from unittest import TestCase from testfixtures import Replacer, ShouldRaise class TestReplacer(TestCase): def test_function(self): from testfixtures.tests import sample1 assert sample1.z() == 'original z' def test_z(): return 'replacement z' r = Replacer() r.replace('testfixtures.tests.sample1.z',test_z) assert sample1.z() == 'replacement z' r.restore() assert sample1.z() == 'original z' def test_class(self): from testfixtures.tests import sample1 x = sample1.X() assert x.__class__.__name__ == 'X' class XReplacement(sample1.X): pass r = Replacer() r.replace('testfixtures.tests.sample1.X', XReplacement) x = sample1.X() assert x.__class__.__name__ == 'XReplacement' assert sample1.X().y() == 'original y' r.restore() x = sample1.X() assert x.__class__.__name__ == 'X' def test_method(self): from testfixtures.tests import sample1 assert sample1.X().y() == 'original y' def test_y(self): return 'replacement y' r = Replacer() r.replace('testfixtures.tests.sample1.X.y',test_y) assert sample1.X().y()[:38] == 'replacement y' r.restore() assert sample1.X().y() == 'original y' def test_class_method(self): from testfixtures.tests import sample1 c = sample1.X assert sample1.X.aMethod() is c def rMethod(cls): return cls, 1 r = Replacer() r.replace('testfixtures.tests.sample1.X.aMethod',rMethod) sample1.X.aMethod() assert sample1.X.aMethod() == (c, 1) r.restore() sample1.X.aMethod() assert sample1.X.aMethod() is c def test_multiple_replace(self): from testfixtures.tests import sample1 assert sample1.z() == 'original z' assert sample1.X().y() == 'original y' def test_y(self): return self.__class__.__name__ def test_z(): return 'replacement z' r = Replacer() r.replace('testfixtures.tests.sample1.z',test_z) r.replace('testfixtures.tests.sample1.X.y',test_y) assert sample1.z() == 'replacement z' assert sample1.X().y() == 'X' r.restore() assert sample1.z() == 'original z' assert sample1.X().y() == 'original y' def test_gotcha(self): # Just because you replace an object in one context: from testfixtures.tests import sample1 from testfixtures.tests import sample2 assert sample1.z() == 'original z' def test_z(): return 'replacement z' r = Replacer() r.replace('testfixtures.tests.sample1.z',test_z) assert sample1.z() == 'replacement z' # Doesn't meant that it's replaced in all contexts: assert sample2.z() == 'original z' r.restore() def test_remove_called_twice(self): from testfixtures.tests import sample1 def test_z(): pass r = Replacer() r.replace('testfixtures.tests.sample1.z',test_z) r.restore() assert sample1.z() == 'original z' r.restore() assert sample1.z() == 'original z' def test_with_statement(self): from testfixtures.tests import sample1 assert sample1.z() == 'original z' def test_z(): return 'replacement z' with Replacer() as r: r.replace('testfixtures.tests.sample1.z',test_z) assert sample1.z() == 'replacement z' assert sample1.z() == 'original z' def test_not_there(self): def test_bad(): pass with Replacer() as r: with ShouldRaise(AttributeError("Original 'bad' not found")): r.replace('testfixtures.tests.sample1.bad', test_bad)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
test_django | Folder | 0755 |
|
|
__init__.py | File | 64 B | 0644 |
|
configparser-read.txt | File | 832 B | 0644 |
|
configparser-write.txt | File | 775 B | 0644 |
|
directory-contents.txt | File | 739 B | 0644 |
|
sample1.py | File | 1.11 KB | 0644 |
|
sample2.py | File | 412 B | 0644 |
|
sample3.py | File | 43 B | 0644 |
|
test_compare.py | File | 61.34 KB | 0644 |
|
test_comparison.py | File | 22.17 KB | 0644 |
|
test_components.py | File | 974 B | 0644 |
|
test_date.py | File | 10.41 KB | 0644 |
|
test_datetime.py | File | 16.58 KB | 0644 |
|
test_diff.py | File | 892 B | 0644 |
|
test_generator.py | File | 467 B | 0644 |
|
test_log_capture.py | File | 7.21 KB | 0644 |
|
test_logcapture.py | File | 19.21 KB | 0644 |
|
test_mappingcomparison.py | File | 9.42 KB | 0644 |
|
test_mock.py | File | 2.19 KB | 0644 |
|
test_outputcapture.py | File | 4.25 KB | 0644 |
|
test_popen.py | File | 22.77 KB | 0644 |
|
test_popen_docs.py | File | 7.5 KB | 0644 |
|
test_rangecomparison.py | File | 5.21 KB | 0644 |
|
test_replace.py | File | 29.27 KB | 0644 |
|
test_replacer.py | File | 3.81 KB | 0644 |
|
test_roundcomparison.py | File | 4.71 KB | 0644 |
|
test_sequencecomparison.py | File | 12.08 KB | 0644 |
|
test_should_raise.py | File | 9.73 KB | 0644 |
|
test_shouldwarn.py | File | 4.51 KB | 0644 |
|
test_stringcomparison.py | File | 1.32 KB | 0644 |
|
test_sybil.py | File | 4.2 KB | 0644 |
|
test_tempdir.py | File | 2.82 KB | 0644 |
|
test_tempdirectory.py | File | 10.95 KB | 0644 |
|
test_time.py | File | 7.55 KB | 0644 |
|
test_twisted.py | File | 5.54 KB | 0644 |
|
test_wrap.py | File | 6.42 KB | 0644 |
|