Как выполнить процедуру от другой единицы?

Другой простой подход должен иметь Ваш тестовый 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/ для получения дополнительной информации о гашении зависимостей для тестов.

7
задан Jon Seigel 28 March 2010 в 22:04
поделиться

2 ответа

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.

7
ответ дан 6 December 2019 в 19:39
поделиться

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().

6
ответ дан 6 December 2019 в 19:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: