我正在使用pytest为API编写测试。 测试的结构如下:
KEEP_BOX_IDS = ["123abc"]
@pytest.fixture(scope="module")
def s():
UID = os.environ.get("MYAPI_UID")
if UID is None:
raise KeyError("UID not set in environment variable")
PWD = os.environ.get("MYAPI_PWD")
if PWD is None:
raise KeyError("PWD not set in environment variable")
return myapi.Session(UID, PWD)
@pytest.mark.parametrize("name,description,count", [
("Normal Box", "Normal Box Description", 1),
("ÄäÖöÜüß!§", "ÄäÖöÜüß!§", 2),
("___--_?'*#", "\n\n1738\n\n", 3),
])
def test_create_boxes(s, name, description, count):
box_info_create = s.create_box(name, description)
assert box_info_create["name"] == name
assert box_info_create["desc"] == description
box_info = s.get_box_info(box_info_create["id"])
assert box_info["name"] == name
assert box_info["desc"] == description
assert len(s.get_box_list()) == count + len(KEEP_BOX_IDS)
def test_update_boxes(s):
bl = s.get_box_list()
for b in bl:
b_id = b['id']
if b_id not in KEEP_BOX_IDS:
new_name = b["name"] + "_updated"
new_desc = b["desc"] + "_updated"
s.update_box(b_id, new_name, new_desc)
box_info = s.get_box_info(b_id)
assert box_info["name"] == new_name
assert get_box_info["desc"] == new_desc
我使用固定装置来设置会话(这将使我保持与API的连接)。
您可以看到我在开始时创建了3个框。 接下来的所有测试都在这3个框上进行某种操作。 (框只是文件夹和文件的空间)
例如:update_boxes,create_folders,rename_folders,upload_files,change_file名称等。
我知道这样做不好,因为所有测试都是相互依赖的,但是如果我以正确的顺序执行它们,那么测试是有效的,那就足够了。
第二个问题,最让我感到困扰的是,以下所有测试均以相同的行开头:
bl = s.get_box_list()
for b in bl:
b_id = b['id']
if b_id not in KEEP_BOX_IDS:
box_info = s.get_box_info(b_id)
我总是需要调用此for循环来获取每个box的ID和信息。 我尝试将其放在第二个灯具中,但问题是那时将有两个灯具。 有更好的方法吗?
谢谢