![]() |
1
25
urllib2有一个函数名为
|
![]() |
2
9
最好是编写一个模拟的urlopen(也可能是请求),它提供了所需的最小接口,可以像urllib2的版本那样工作。然后,您需要拥有使用它的函数/方法,它能够以某种方式接受这个模拟的urlopen,并使用
这是相当多的工作,但值得。记住,python对ducktyping非常友好,所以您只需要提供一些响应对象属性的外观来模拟它。 例如:
当然,其中一些是很难模仿的,因为例如,我相信正常的“headers”是一个httpmessage,它实现了一些有趣的东西,比如不区分大小写的头名称。但是,您可以简单地用响应数据构造一个httpmessage。 |
![]() |
3
6
构建一个单独的类或模块,负责与外部提要通信。 使该类成为 test double . 您使用的是python,所以您在这里非常出色;如果您使用的是c,我建议您使用接口或虚拟方法。 在单元测试中,插入外部feed类的测试double。测试您的代码是否正确地使用了该类,假设该类完成了与外部资源正确通信的工作。让您的测试双重返回假数据,而不是实况数据;测试数据的各种组合,当然,URLLIB2可能会抛出可能的异常。 嗯…就是这样。 您不能有效地自动化依赖外部源的单元测试,因此最好 不做 .在通信模块上偶尔运行集成测试,但不要将这些测试作为自动化测试的一部分。 编辑: 只是我的答案和@crast的答案之间的区别。两者基本上都是正确的,但涉及不同的方法。在Crast的方法中,您在库本身上使用了一个双测试。在我的方法中,您将库的使用抽象为一个单独的模块,并对该模块进行双重测试。 你所使用的方法完全是主观的;那里没有“正确”的答案。我更喜欢我的方法,因为它允许我构建更模块化、更灵活的代码,这是我的价值所在。但是,从编写额外代码的角度来看,这是一个代价,在许多敏捷的情况下,这可能是不值得重视的。 |
![]() |
5
1
我认为最简单的事情就是在单元测试中创建一个简单的Web服务器。当您启动测试时,创建一个新的线程来监听某个任意端口,当客户机连接时只返回一组已知的头和XML,然后终止。 如果你需要更多信息,我可以详细说明。 下面是一些代码:
要运行单元测试,请致电
|
![]() |
6
0
为什么不只是 mock a website 返回您期望的响应?然后在安装程序的线程中启动服务器,并在拆卸过程中终止它。我最后做这项测试的代码将通过模拟一个SMTP服务器发送电子邮件,它工作得很好。当然,可以为HTTP做些更琐碎的事情…
|
![]() |
7
0
为了在@john la rooy answer上提高一点,我做了一个小班,允许对单元测试进行简单的模拟。 应该使用python 2和3
像这样使用:
|
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |