Другой простой подход должен иметь Ваш тестовый urllib's переопределения urlopen()
функция. Например, если Ваш модуль имеет
import urllib
def some_function_that_uses_urllib():
...
urllib.urlopen()
...
, Вы могли бы определить свой тест как это:
import mymodule
def dummy_urlopen(url):
...
mymodule.urllib.urlopen = dummy_urlopen
Затем то, когда Ваши тесты вызовут функции в mymodule
, dummy_urlopen()
, назовут вместо реального urlopen()
. Динамические языки как Python делают супер легким погасить методы и классы для тестирования.
Посмотрите мои сообщения в блоге в http://softwarecorner.wordpress.com/ для получения дополнительной информации о гашении зависимостей для тестов.
You need to put the procedure's signature in your interface, like so:
unit main;
interface
procedure Discard();
implementation
procedure Discard();
begin
//do whatever
end;
Other units can only "see" whatever's listed in the interface section.
In unit "Main" you declare Discard in the "interface" section:
unit Main;
interface
uses ...
procedure Discard (...); // only the declaration, not the entire procedure
implementation
... // code
Now in unit "Engine" you add "Main" to the "uses" section.
uses Main, ...
Thats it, you can call Discard(...)
now. If there are more than one Discard()
you can explicitely call this Discard()
by using Main.Discard()
.