内容:ガイド
序文
再利用性を向上させるために、テスト ケースを作成するときにさまざまなフィクスチャを使用します。たとえば、最も一般的なログイン操作、ほとんどのユース ケースの前提条件はログインです。
異なるユースケースで異なるテストアカウントにログインする必要があると仮定すると、フィクスチャにログインするときにアカウントを書き換えることはできず、ログイン操作はパラメータを渡すことによって完了する必要があります。
ケース 1: 単一のパラメータを渡す
import pytest
@pytest.fixture()
def login(request):
name = request.param
print(f"== 账号是:{
name} ==")
return name
data = ["pyy1", "polo"]
ids = [f"login_test_name is:{
name}" for name in data]
@pytest.mark.parametrize("login", data, ids=ids, indirect=True)
def test_name(login):
print(f" 测试用例的登录账号是:{
login} ")
の結果
collecting ... collected 2 items
10fixture_request.py::test_name[login_test_name is:pyy1] == 账号是:pyy1 ==
PASSED [ 50%] 测试用例的登录账号是:pyy1
10fixture_request.py::test_name[login_test_name is:polo] == 账号是:polo ==
PASSED [100%] 测试用例的登录账号是:polo
indirect=True パラメーターを追加すると、login がパラメーターではなく関数として実行され、データがパラメーター (def test_name (
login)) として関数に渡されます。ここで、login はフィクスチャによって返される値です。
ケース 2: 複数のパラメータ
@pytest.fixture()
def logins(request):
param = request.param
print(f"账号是:{
param['username']},密码是:{
param['pwd']}")
return param
data = [
{
"username": "name1", "pwd": "pwd1"},
{
"username": "name2", "pwd": "pwd2"},
]
@pytest.mark.parametrize("logins", data, indirect=True)
def test_name_pwd(logins):
print(f"账号是:{
logins['username']},密码是:{
logins['pwd']}")
の結果
10fixture_request.py::test_name_pwd[logins0] 账号是:name1,密码是:pwd1
PASSED [ 50%]账号是:name1,密码是:pwd1
10fixture_request.py::test_name_pwd[logins1] 账号是:name2,密码是:pwd2
PASSED [100%]账号是:name2,密码是:pwd2
複数のパラメータを渡す必要がある場合は、辞書を介して渡す必要があります
ケース 3: 複数のフィクスチャ (デコレータは 1 つだけ)
こちらの方がよく使われます
# 多个fixture
@pytest.fixture(scope="module")
def input_user(request):
user = request.param
print("登录账户:%s" % user)
return user
@pytest.fixture(scope="module")
def input_psw(request):
psw = request.param
print("登录密码:%s" % psw)
return psw
data = [
("name1", "pwd1"),
("name2", "pwd2")
]
@pytest.mark.parametrize("input_user,input_psw", data, indirect=True)
def test_more_fixture(input_user, input_psw):
print("fixture返回的内容:", input_user, input_psw)
の結果
10fixture_request.py::test_more_fixture[name1-pwd1] 登录账户:name1
登录密码:pwd1
PASSED [ 50%]fixture返回的内容: name1 pwd1
10fixture_request.py::test_more_fixture[name2-pwd2] 登录账户:name2
登录密码:pwd2
PASSED [100%]fixture返回的内容: name2 pwd2
ケース 4: 複数のフィクスチャ (オーバーレイ デコレータ)
# 多个fixture
@pytest.fixture(scope="function")
def input_user(request):
user = request.param
print("登录账户:%s" % user)
return user
@pytest.fixture(scope="function")
def input_psw(request):
psw = request.param
print("登录密码:%s" % psw)
return psw
name = ["name1", "name2"]
pwd = ["pwd1", "pwd2"]
@pytest.mark.parametrize("input_user", name, indirect=True)
@pytest.mark.parametrize("input_psw", pwd, indirect=True)
def test_more_fixture(input_user, input_psw):
print("fixture返回的内容:", input_user, input_psw)
の結果
10fixture_request.py::test_more_fixture[pwd1-name1] 登录账户:name1
登录密码:pwd1
PASSED [ 25%]fixture返回的内容: name1 pwd1
10fixture_request.py::test_more_fixture[pwd1-name2] 登录账户:name2
登录密码:pwd1
PASSED [ 50%]fixture返回的内容: name2 pwd1
10fixture_request.py::test_more_fixture[pwd2-name1] 登录账户:name1
登录密码:pwd2
PASSED [ 75%]fixture返回的内容: name1 pwd2
10fixture_request.py::test_more_fixture[pwd2-name2] 登录账户:name2
登录密码:pwd2
PASSED [100%]fixture返回的内容: name2 pwd2
テストケースの数=2*2=4
以下は、私がまとめた 2023 年の最も完全なソフトウェア テスト エンジニア学習知識アーキテクチャ システム図です。 |
1. Pythonプログラミングの入門から習得まで
2.インターフェース自動化プロジェクトの実戦
3. Web自動化プロジェクトの実戦
4. アプリ自動化プロジェクトの実戦
5. 一流メーカーの再開
6. DevOps システムのテストと開発
7. 一般的に使用される自動テストツール
8、JMeterのパフォーマンステスト
9. まとめ(最後にちょっとしたサプライズ)
果敢に前進し、高みを目指してください。夢を追い求め、奮闘し続けてください。あらゆる努力は自己突破の機会であり、粘り強く努力すれば、必ずあなたの足元に成功が花開きます。自分を信じて、どんな困難も乗り越えて、輝かしい人生を自分で切り開いていきましょう!
苦難を恐れず勇敢に進む 夢を追う 最善を尽くす 恐れずに耐える 限りなく努力し輝きを生み出す 地に足をつけて頂上へ登る 自己実現に向けて努力する 積極的に収穫する未来; 自信に満ちて、何もしない ノー; 人生は短く、闘いは終わりがありません。
たゆまぬ努力だけが混乱の霧を晴らし、輝かしい明日に向かって進むことができます。たとえ前途多難であっても、夢を胸に闘い続ければ、地に足をつけていれば必ず成功します。自分を信じて、限界を超えて、前へ!