我正在尝试在python单元测试中模拟常量。
我有一个名为 settings.py 的模块,其中包含一组常量,特别是我有一个:
REL_PATH = "my/path/{}/file.csv"
然后在另一个模块中,我有一个使用REL_PATH变量的函数,如下所示:
from path.for.REL_PATH.setting import REL_PATH
def create_csv(missing_path_here):
columns = ["col_a", "col_b", ...]
empty_df = pd.DataFrame(columns=columns)
Writer(empty_df, REL_PATH.format(missing_path_here)).write_csv()
在我的单元测试中,我有以下代码:
class TestCreateAnomaliesRepositoryCsv(unittest.TestCase):
@patch("path.for.setting.REL_PATH", "another/custom/path/file.csv")
def test_create_anomalies_repository_csv(self):
create_csv(missing_path_here="test")
我希望通过这种方式将在“另一个/自定义/路径/”路径下创建csv文件,但仍在原始目录中创建csv文件。
我也试图这样做:
def test_create_anomalies_repository_csv(self):
with path("path.for.setting.REL_PATH", "another/custom/path/file.csv")
create_csv(missing_path_here="test")
但最终结果是相同的。
我究竟做错了什么?
如果要修补对象,则必须始终修补模块中使用的对象,例如,如果您以以下形式导入对象:from x import y
在模块中module
,必须修补module.y
而不是x.y
。这是在描述文档,并且有一个很好的博客文章由斯内德尔德在详细描述问题。在您的情况下,您需要:
@patch("path.to.using_module.REL_PATH", "another/custom/path/file.csv")
def test_create_anomalies_repository_csv(self):
create_csv(missing_path_here="test")
只要path.to.using_module.py
输入这样的常量:
from path.for.setting import REL_PATH
您尝试过的另一个变体是等效的,也可以使用:
def test_create_anomalies_repository_csv(self):
with path("path.to.using_module.REL_PATH", "another/custom/path/file.csv")
create_csv(missing_path_here="test")
总而言之,您始终必须检查如何导入要使用的对象。基本上有两种情况:
sut.py
像import module
或import module.object
在这种情况下,它可以被修补为-module.object
sut.py
类似from module import object
-在这种情况下,sut.py
使用本地引用来引用该对象,并且应为sut.object
我有一个调用流api的异步函数。为这个函数编写单元测试的最佳方法是什么?必须模拟api响应。 我尝试使用aiounittest,并使用unittest的mock。但是这调用了实际的api,而不是得到模拟的响应。也尝试pytest.mark.asyncio注释,但这一直给我的错误-协程从未等待。我已经验证pyest-asyncio已经安装。 我正在使用VS代码和Python 3.6.6 以下是相关的
} 我正在努力解决这个问题。请帮帮我...谢谢。
我面临一个问题,而嘲笑jUnit测试的东西。 情况如下: 类A实现了来自第三方jar的接口,并且需要实现method1。除了method1之外,A还包含method2,它是从method1调用的。method2本身调用一些外部服务。 我想单元测试方法1。 方法1接受输入,比如X。X有一个包裹在里面的输入变量,比如var1。var1由方法1中的逻辑使用,方法1在X中设置另一个变量,比如var2。 所
我在尝试包装我的代码以用于单元测试时遇到了一些问题。问题是。我有接口IHttpHandler: 现在很明显,我将在Connection类中有一些方法,这些方法将从my后端检索数据(JSON)。但是,我想为这个类编写单元测试,显然我不想编写针对真实后端的测试,而是一个被嘲弄的测试。我曾尝试谷歌一个很好的答案,但没有很大的成功。我以前可以并且曾经使用过Moq来模拟,但是从来没有在像HttpClient
问题内容: 我已经通过两种方式为我的单元测试创建了用户: 1)为“ auth.user”创建一个大致如下的灯具: 我省去了看似不重要的部分。 2)在setUp函数中使用“ create_user”(尽管我宁愿将所有内容保留在我的Fixture类中): 请注意,两种情况下的密码均为辛普森。 我已验证该信息一次又一次正确地加载到测试数据库中。我可以使用User.objects.get来获取User
我正在尝试使用Mockito在SprinBoot应用程序中进行一些jUnit测试。 现在我的服务有了一些变量,可以从通过注释: 我试图通过像这样使用来测试这个: 但是,该属性不会被填充,并保持为。 这方面有很多TPOIC,但我还没能拼凑出一个解决方案。我看到解决方案建议,但它似乎想做一个集成测试,使服务加速,但由于无法连接到数据库,服务失败了。所以这不是我想要的。 我还看到一些解决方案建议我制作一