假设我有一个 HTTP URL 列表,例如
endpoints = ["e_1", "e_2", ..., "e_n"]
Run Code Online (Sandbox Code Playgroud)
我想运行n测试,每个端点一个。我怎样才能做到这一点?
一次测试所有端点的简单方法是
def test_urls():
for e in endpoints:
r = get(e)
assert r.status_code < 400
Run Code Online (Sandbox Code Playgroud)
或类似的东西。但正如您所看到的,这是针对所有n端点的一次测试,我希望比这更详细一些。
我尝试过使用类似的固定装置
@fixture
def endpoint():
for e in endpoints:
yield e
Run Code Online (Sandbox Code Playgroud)
但是,显然,Pytest 并不真正喜欢固定装置中的“多次产量”并返回yield_fixture function has more than one 'yield'错误
在Python中,我可以end在切片中设置我想要的内容:
l = [0, 1, 2, 3, 4, 5]
l[:-1] = [0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我也可以设置我想要的步骤:
l[::-1] = [5, 4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)
那么,为什么我不能反转在一次拍摄中跳过最后一项的列表呢?我的意思是为什么会这样:
l[:-1:-1] = []
Run Code Online (Sandbox Code Playgroud)
为了获得预期的结果,使用切片,我必须这样做:
l[:-1][::-1] = [4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)
这与字段的优先级有关吗?切片期间动作发生的顺序?
我正在官方网站上制作Django教程,我目前正在为我们正在创建的示例轮询应用程序设置URL.
截至目前,我polls/urls.py看起来像这样:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
url(r'^(?P<question_id>[0-9]+)/vote/$', views.votes, name='vote')
]
Run Code Online (Sandbox Code Playgroud)
我不禁注意到重复,(?P<question_id>[0-9]+)所以我想知道是否有一种更简单的方法来避免这种情况,除了将其提取为常数之外QUESTION_PATTERN = (?P<question_id>[0-9]+)