今日のデータの依存関係のグローバルな問題を解決するために、グローバル変数を使用することで、我々は巨大な穴に気づきます。エグゼクティブためのフレームワーク単体テスト、スクリプトunittestの順序がデフォルトでロードされます:負荷ASCIIコード順に従って、数字と文字の順序は次のとおりです:0-9、AZ、AZ。したがって、試験方法Aの開始に優先的に実行される開始した後に、実行されます。
私は次のように与えられ、その結果、このルールの前に知りません。
AttributeError:「NoneType」オブジェクトが無属性「グループ」を持っています
このエラーが発生するため、私は、ログインクッキーを使用する第2例の結果を使用する必要がある第2の使用ケースは、クッキーが空である渡すつながる、最初行きました。最後の解決策は:そう最初の実装のユースケースを着陸、動作シーケンス、ユースケース名の変更を調整します。
図のfacieの最初の実行との第2の実施形態では、そう印刷クッキーは空です。
図コードで見ることができます。
私たちはどれも、ログインクッキーは、交換作業ではなかった=グローバル変数、COOKIEを定義します。すなわちCOOKIE = login_res.cookies。そして、次回のユースケースは、情報の私の罰金ページを取得するには、クッキー= COOKIE HTTP要求が内部に伝達されます。このような問題を解決することは要求に値を返すように要求によって異なります。
次のようにすべてのコードは次のとおりです。
import unittest from API_AUTO.tools.http_request import HttpRequest import re COOKIE = None class TestHttp(unittest.TestCase): def setUp(self): pass # abcdefghijklmnopqrstuvwxyz def test_Normal_login(self): '''正常登录''' global COOKIE url = 'https://www.ketangpai.com/UserApi/login' data = { "email": "[email protected]", "password": "A156829", "remember": 0 } headers = { "User-Agent": " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", "Content-Type": "application/x-www-form-urlencoded", } login_res = HttpRequest().http_request('post', url, data, headers) if login_res.cookies: COOKIE = login_res.cookies print(COOKIE) try: self.assertEqual(1, login_res.json()['status'], '登录失败') except AssertionError as e: print('登录错误{}'.format(e)) raise e def test_mooc(self): '''我的精品页面''' global COOKIE # print(COOKIE) url1 = 'https://www.ketangpai.com/Mooc/Mooc/index.html' headers1 = { "Referer": "https: // www.ketangpai.com / Main / index.html", "User-Agent": " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", } print(COOKIE) res1 = HttpRequest().http_request('get', url=url1, headers=headers1, cookies=COOKIE) try: pattern = '<img class=.*?\salt=(".*?").*?>' regular = re.search(pattern, res1.text, re.S) self.assertEqual('夏茂杰', eval(regular.group(1)), '进入我的界面失败') except Exception as e: print('错误是{}'.format(e)) raise e def tearDown(self): pass if __name__ == '__main__': unittest.main()