我是新手,所以如果问题不够具体,请不要介意。
我想知道如何将单元测试合并到 pytest 中的单个集成测试中。此外,我想在单个测试会话中重复集成测试几次。请让我知道是否有办法在 pytest 中做到这一点。
场景:我有两个单元测试名称 test_start_call 和 test_end_call 由 pytest 按该顺序调用。
现在我想重复这个过程几次,所以我这样做了:
对于范围内的 i(0,c):pytest.main(some command)
它工作正常,它将开始测试会话并根据需要多次拆除测试会话,在每个测试会话中进行一次调用。
但是我想在一个测试会话中打几个电话,到目前为止,自从过去两天以来,我还没有找到任何方法来做到这一点。我尝试查看 xdist,但我不想并行启动新进程。集成测试应该在单个测试会话中根据需要多次连续执行单元测试(开始调用和结束调用)。
我被困住了。所以任何帮助都会很棒。谢谢!
我在一次采访中被问到这个问题。
我说就用cp吧。然后我被要求模仿 cp 本身的实现。
所以我想好吧,让我们打开文件,逐个读取并将其写入另一个文件。
然后我被要求进一步优化它。我想让我们读取并写入这些块。关于什么是好的块大小,我没有一个好的答案。请帮我解决这个问题。
然后我被要求进一步优化。我想也许我们可以从不同的线程并行读取并并行写入。
但我很快意识到并行读取是可以的,但写入将无法并行工作(我的意思是没有锁定),因为来自一个线程的数据可能会覆盖其他线程。
所以我想好吧,让我们并行读取,将其放入队列中,然后单个线程将其从队列中取出并逐个写入文件。
这甚至可以提高性能吗?(我的意思不是对于小文件。但是对于大文件,开销会更大)
另外,是否有类似操作系统的技巧,我可以将两个文件指向磁盘中的相同数据?我的意思是我知道有符号链接,但除此之外?
我知道读取块大小是文件系统块大小倍数的文件会更好。
1)为什么会这样?我的意思是说块大小是 8kb,我读了 9kb。这意味着它必须先获取 12kb,然后再删除其他额外的 3kb。是的,它确实做了一些额外的工作,但是除非你的块大小真的很大,否则这会产生很大的不同吗?
我的意思是,如果我正在阅读 1tb 文件,那么这肯定会有所不同。
我能想到的另一个原因是块大小是指硬盘上的一组扇区(请纠正我)。所以它可能指向 8、16 或 32 或只是一个扇区。所以如果块指向更多的扇区,你的硬盘将不得不做更多的工作?我对吗?
2) 假设块大小为 8kb。我现在一次读取 16kb 吗?1MB?1GB?我应该使用什么作为块大小?我知道可用内存是一个限制,但除此之外还有哪些其他因素会影响我的选择?
非常感谢所有的答案。
我有一个 Web 应用程序(由 uwsgi 提供的 django),我正在使用 nginx 代理对特定容器的请求。这是我的 default.conf 中的相关片段。
upstream web.ubuntu.com {
server 172.18.0.9:8080;
}
server {
server_name web.ubuntu.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
include uwsgi_params;
uwsgi_pass uwsgi://web.ubuntu.com;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我希望从 nginx 而不是 uwsgi 工作人员提供静态文件。
所以基本上我想添加如下内容:
location /static/ {
autoindex on;
alias /staticfiles/;
}
Run Code Online (Sandbox Code Playgroud)
到容器自动生成的服务器块。
我相信这应该使 nginx 服务于 /staticfiles 文件夹中对 web.ubuntu.com/static/* 的所有请求。
但是由于配置(default.conf)是自动生成的,我不知道如何将上述位置动态添加到服务器块:(
我认为位置块不能在服务器块之外,每个服务器只能有一个服务器块?
所以我不知道如何在那里添加位置块,除非我在 nginx 出现后动态添加到 default.conf 然后我猜想重新加载它。
我确实通过了https://github.com/jwilder/nginx-proxy并且我只看到了一个实际更改每个主机和默认位置设置的示例。但是完全没有添加新位置。
我已经在 jwilder/nginx-proxy 的问答中发布了这个,但没有得到回应。
如果有办法实现这一点,请帮助我。