小编Sha*_*rad的帖子

有没有办法指定从文件运行哪些pytest测试?

有没有办法选择pytest测试从文件运行?例如,包含要执行的测试列表的文件foo.txt:

tests_directory/foo.py::test_001
tests_directory/bar.py::test_some_other_test
Run Code Online (Sandbox Code Playgroud)

或者有没有办法从pytest的不同目录中选择多个测试,测试名称中没有共同的模式?

py.test -k <pattern> 允许单一模式.

一种选择是针对每个测试使用pytest.mark,但我的要求是运行来自不同文件的不同测试组合.

有没有办法为每个模式指定多个模式和测试文件名?或者有没有办法在文件中指定确切的测试路径并将该文件作为pytest的输入提供?或者是否有可用于此目的的钩子功能?

python pytest

133
推荐指数
9
解决办法
8万
查看次数

如何使用映射或过滤器而不是列表推导来过滤特定值的嵌套字典(pythonic 方式)?

我有一个嵌套字典。

>>> foo = {'m': {'a': 10}, 'n': {'a': 20}}
>>> 
Run Code Online (Sandbox Code Playgroud)

我想根据“a”的值过滤特定值。

为此,我可以使用列表推导式。

>>> [foo[n] for n in foo if foo[n]['a'] == 10]
[{'a': 10}]
>>> 
Run Code Online (Sandbox Code Playgroud)

单独使用 list 会给我来自 foo 的元素(而不是元素的值) - 正如预期的那样:

>>> list(filter(lambda x: foo[x] if foo[x]['a']==10 else None,foo))
['m']
>>> 
Run Code Online (Sandbox Code Playgroud)

使用地图返回我不需要的“无”值:

>>> list(map(lambda x: foo[x] if foo[x]['a']==10 else None,foo))
[{'a': 10}, None]
>>> 
Run Code Online (Sandbox Code Playgroud)

结合这两者,我可以获取所需的值。但我猜 foo 被迭代了两次 - 一次用于过滤器和映射。列表理解解决方案只需要我迭代一次。

>>> list(map(lambda t: foo[t], filter(lambda x: foo[x] if foo[x]['a']==10 else None,foo)))
[{'a': 10}]
>>> 
Run Code Online (Sandbox Code Playgroud)

这是另一种仅使用过滤器的方法。这给了我想要的值,但我不确定迭代字典的值是否是一个好的/pythonic 方法:

>>> list(filter(lambda x: …
Run Code Online (Sandbox Code Playgroud)

python dictionary list-comprehension list python-3.5

7
推荐指数
2
解决办法
9423
查看次数

Python支持FreeBSD和CentOS/Ubuntu /其他linux风格一样好吗?

我们使用的开发环境是FreeBSD.我们正在评估Python开发一些工具/实用程序.我想弄清楚所有/大多数python包是否可用于FreeBSD.

我尝试使用CentOS/Ubuntu,安装python和包(使用pip)相当容易.在FreeBSD上,它并不容易,但可能是我没有使用正确的步骤或者遗漏了一些东西.

我们在FreeBSD上有一些本地运行的工具/实用程序,我希望Python与它们进行交互 - 因此,FreeBSD.

任何输入/指针都会非常感激.

关心沙拉德

python freebsd pip

5
推荐指数
1
解决办法
690
查看次数

有没有办法覆盖pytest(python)中的默认断言?

每次调用断言时,我都想将一些信息记录到文件/数据库中。有没有办法在每次调用断言时覆盖断言或注册某种回调函数来做到这一点?

问候沙拉德

python pytest

5
推荐指数
2
解决办法
2173
查看次数

如何使用 gcloud CLI 更新防火墙规则以将新 IP 地址附加到源范围?

我的 GCP 项目中有一个现有的防火墙规则,允许传入流量到达一组特定 IP 地址/IP 范围的特定端口。我想更新源范围以包含更多 IP 地址/IP 范围。我有多个这样的防火墙规则。

我可以从 UI 更新防火墙规则,但这很慢并且需要多次单击。相反,我想使用 gcloud CLI。

这是命令:

gcloud compute firewall-rules update <Firewall rule name> --source-range=<IP addr/range>
Run Code Online (Sandbox Code Playgroud)

虽然这些属性(例如端口列表)保持不变(如文档所述),但它会覆盖现有的源 IP 地址/范围。有没有办法将 IP 地址/范围附加到现有的源范围。

我可以执行一个多步骤过程/脚本,首先使用以下方法检索列表:

gcloud compute firewall-rules list --filter="name=<Firewall rule name>" --format json
Run Code Online (Sandbox Code Playgroud)

并创建更新的列表,然后调用更新命令。

但假设添加/删除 IP 地址范围是一个相当常见的用例,我想知道是否有直接的方法来做到这一点。

任何帮助,将不胜感激。

谢谢。

firewall google-cloud-platform gcloud

3
推荐指数
1
解决办法
1933
查看次数

如何通过 pyvmomi 或 cli 确定 ESX 虚拟机管理程序上的总内存、空闲内存、可用内存?

我正在寻找 ESX/ESXi 特定命令/示例 pyvmomi API 来确定虚拟机管理程序上的系统内存信息 - 可用/总/已使用。

python esx esxi pyvmomi

2
推荐指数
1
解决办法
8374
查看次数