[Python + unittestインターフェース自動テスト戦闘(6)]-トークン共有、インポートの簡素化

I.はじめに

自動テストでは、いくつかの問題が発生することがよくあります。

(1)何百ものテストケースがありますが、ログインステータスはどのように維持されますか?

(2)テストされた各インターフェースは、他のインターフェースのパラメーターに依存します。次の図に示すように、12を超えるフロントインターフェースクラスがあります。さらに、datetime、json、requests、osなどの一般的に使用されるライブラリがいくつかあります。など。テストケースクラスごとに、XXXから1ダース以上のインポートXXXを書き込む必要がありますか?

では、インターフェイスのインポートの記述を単純化して、すべての依存関係とライブラリを一度にインポートするにはどうすればよいでしょうか。

 

次に、問題を解決します

1.以下に示すように、トークン共有の問題を解決する効果

/ api / auth / jwt / tokenはログインインターフェースであり、一度ログインするだけで、すべてのインターフェーステストケースが実行されます

 

2.インポートを簡素化します 

 記事[パイソン+ unittestのインターフェース自動テスト(5)] -デザインのテストケース、 1つのステップは、フロントインターフェースをインポートすることです。

次の図に示すように、PreProcessing import *からのみ、前の記事の12を超えるプレインターフェイスを一度にインポートできます。

 

三、実現

次に、Pythonパッケージのいくつかの機能を使用して、トークンの共有を実現し、インターフェイスのインポートを簡素化します。

まず、Pythonパッケージの機能を理解する必要があります

(1)__ init__。pyをインポートする際に、実行可能なコードがある場合、そのコードは実行されます

(2)インポートは1回だけインポートされます。つまり、インポートされた回数に関係なく、実際には1回だけ実行されます。

したがって、前処理パッケージなどの前処理メソッドのパッケージを作成し、パッケージで使用する必要のあるすべてのメソッドをカプセル化してから、__init__。pyでカプセル化するだけで済みます。

1.インポートする必要のあるすべてのメソッドをインポートします

#コーディング= UTF-8 
__all__ = [ 
    'コアベースコア'、
    'コアコア'、
    'コア部門'、
    'コア' 
    'コアユーザー'、
    'LisApplication'、
    'RtidLisSetProjectMapping'、
    'RtipLisAntibiotic'、
    'RtipLisMidClinicalApply'、
    ' RtipLisOut ' 
    ' RtipLisQueuingWindows '、
    ' RtipLisReport '、
    ' RtipLisReportCheckCondition '、
    ' RtipLisReportProject '、
    ' RtipLisReportUnit '、
    ' RtipLisUnitProjectMapping ' 
    ]
インポートリクエスト
importunittest 
import json 
from random import choice 
import datetime 
import random 
import string 
import pymysql 
import os 
import time

2.ログイン方法を実現してトークンを取得します

admin_params = {'ユーザー名': '***'、 'パスワード': '***'} 
base_url = 'http:// ***'
デフget_token(のparams):
    "" "
    登录
    """ 
    LOGIN_URL = BASE_URL + '/ API /認証/ JWT /トークン' 
    login_headers = { 
        # 'のContent-Length': '39'、
        'ユーザーエージェント':「のMozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML、Geckoなど)Chrome / 74.0.3729.157 Safari / 537.36 '、
        ' Content-Type ':' application / json; charset = UTF-8 '、
        ' Accept ' : '* / *'、
        'Accept-Encoding': 'gzip、deflate'、
        'Accept-Language': 'zh-CN、zh; q = 0.9' 
    } 
    try:
        r = requests.post(url = login_url、json = params、headers = login_headers) 
        response = json.loads(r.text)
        req_token = response ['data'] ['token']
        KeyErrorreq_token
    KeyErrorを除く:
        print( 'Get Token Failed')


req_token = get_token(params)

3.さらに、いくつかの一般的なパラメータを定義することもできます

LEVEL = 'debug'#ログレベル
PTYPE =(1、2)#タイプ
SEX_CODE =(1、2、3、4)#性別
AGE_UNIT_CODE =( 'day'、 'month'、 'year')#年齢単位
USE_FLAG = (1、0)#フラグを有効にする
PRINT_NOW =(0、1)#バーコードを印刷する
BUSINESS_TYPE =(1、2、3、4、5、6、7 )#レポートアイテムビジネスタイプ1共通

最後に、すべてのテストクラスで、上記の__init__。pyで宣言されたコンテンツを使用できます。


#coding = utf-8 
import sys sys.path.append( '..')
import PreProcessing as p 
from 


PreProcessing import * class Accept(p.unittest.TestCase):
    @ classmethod 
    def setUpClass(cls):
        cls.header、cls .org_id、cls.user_id = p.header、p.org_id、p.user_id 
        print( 'header:'、cls.header)
        cls.url_test = p.base_url + '/ api / rtip / lis / application / accept' 

    def setUp(self):
        t = LisApplication.LisApplication(p.base_url、self .__ class __。org_id、self .__ class __。header)
        self.app_detail = t.get_app_detail( '1')
        print( 'app_detail'、self.app_detail) 
        self .app_detail ['applicationStatus'] = '2 '#申請ステータスを2承認済みに更新します
        c = CoreBaseCore.CoreBaseCore(p.base_url、self .__ class __。org_id、self .__ class __。header)
        self.doctor_id = c.get_core_technician()
        print( 'doctor_id'、self.doctor_id)

    def test_accept_sample_001(self):
        pass 

    def tearDown (self):
        pass 

    @classmethod 
    def tearDownClass(cls):
        pass 


if __name__ == ' 
    __ main __ ':p.unittest.main()

 

 

おすすめ

転載: blog.csdn.net/kk_gods/article/details/111222393