質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

Q&A

解決済

1回答

2369閲覧

pytestで書くテストコードで複数のパラメータ生成やユーザを作成する書き方について

sequelanonymous

総合スコア123

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

0グッド

0クリップ

投稿2018/07/12 13:41

下記、"user_id": "test1"のテストユーザーを数十人と作ってリクエストを送り、テストしたいのですがpayloadを長くして書くのはコードの可読性をさげるなとおもっており、何か他の書き方はないか探しています。
そこで、parametrizerが使えるのではないかとおもったのですが、果たしてこの書き方でよいのかどうか、どう組み合わせてつかっていけばよいのかどうか、模索しております。

何か、こういうふうにかけばよいのではないか?(parametrizerを使う書き方でも使わなくない書き方でも)
というご提案頂けませんでしょうか?

pytest

1xxx_id = 'xxxx' 2 3url = 'http://localhost/v1/xxx' 4test = "xxxxx" 5headers = {'Authorization': 'Bearer %s' % test, 'Content-Type': 'application/json'} 6payload = {"requests": 7 [{"method": "post", 8 "url": "/accounts", 9 "body": {"user_id": "test1"}}, 10 { "method": "post", 11 "url": "/accounts", 12 "body": {"user_id": "test2"}}, 13 {"method": "post", 14 "url": "/accounts", 15 "body": {"user_id": "test3"}}]} 16 17with app.test_request_context(url, method="POST") as req: 18 req.request.args = payload 19 req.request.headers = headers 20 21r = req.request

parametrizerのサンプル

pytest

1 import pytest 2 3 @pytest.mark.parametrize('a,b,ans', [ 4 (2, 3, 4), 5 (1, 1, 3), 6 (3, -1, 2), 7 ]) 8 def test_add(a, b, ans): 9 assert add(a, b) == ans 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

私だったらこう書くかな。

python

1def account(**kwargs): 2 return dict(method="post", 3 url="/accounts", 4 body=kwargs) 5 6 7payload = {"requests": [account(user_id='test%d' % i) 8 for i in range(40)]} 9print(payload)

投稿2018/07/12 15:32

YouheiSakurai

総合スコア6142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sequelanonymous

2018/07/13 00:26

ありがとうございます! pytetsでその辺をよしなにやってくれる書き方があるとかってに想像してましたが、この書き方良さそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問