Python照合データスクリプト

4845 ワード

データを簡単にチェックするスクリプトを見てみましょう
目的
ページ上のテストのたびにチェックする必要があるデータとデータベース内のクエリーのデータをチェックして、コードを解放します.
構想
1つ目:controlレイヤのインタフェースを呼び出してログインし、データをクエリーしてデータベースのデータと比較2つ目:seleniumページのデータとデータベースのデータの比較(java、Pythonいずれも)
2つ目の方法を見てみましょう
まず、データベースへの接続方法を見てみましょう.
def getdatabase(sql):リンクデータベースconn=MySQLdb.connect(host='192.168.8.63',user='root',passwd='E 4 yun.cn 123',db='eayuncloud',port=3306)cur=conn.cursor()try:#sql文#curを実行する.execute("SELECT mon_money FROM money_account WHERE mon_cusid='"+cusid+"' ") cur.execute(sql) results = cur.fetchall() for row in results: mon_money=row[0]except:print"Error:unable to fecth data"#接続curを閉じる.close()conn.close()は結果値return mon_を返します.money
では、どのように業務設計を行いますか???
初期化データdef setUp(self):self.driver = webdriver.Chrome() self.driver.maximize_Windows()ブラウザをselfに最大化します.driver.implicitly_wait(30) self.base_url = "http://192.168.8.65:7070/「self.verificationErrors=[]self.accept_next_alert=Trueクエリー・データベース内のデータとページがキャプチャしたデータの比較:def test_quit(self):driver=self.driver driver r r r r r r r r r.get(self.base_url+)/#/login")#ログインlogin.login.login_ecmc(driver)driver.find_element_by_link_text(u"収益統計").click()page_money=driver.finiver.finiver.find_find_find_find_find_find_ext d_element_by_xpath("html/body/div[1]/div[3]/div/div/div/table/tbody/tr[1]/td[3]/table/tbody/tr[2]/td[3]/p/span").text page_money_to = page_money.replace('¥','') #print("page_money",page_money_to) time.sleep(10) sql = "SELECT SUM(mon_money) FROM money_record where income_type = '1' AND oper_type='4'"pay_count=conn_database.getdatabase(sql)dec=decimal.Decimal(pay_count)pay_count_to=str(dec)[:-1]print("pay_count",pay_count)#pay_count_to=conn_database.cut(pay_count,2)#print("pay_prepaid_to",pay_count_to)flag=u"照合総覧収入統計におけるflag=u"照合照合総覧収入統計における総覧収入統計におけるflag=u"照合照合照合照合総覧収入統計における総覧収入統計における総覧収入統計におけるfl【ECMC実チャージ】失敗!!!if cmp(str(page_money_to),str(pay_count_to)==0:flag=u「総覧収入統計における【ECMC実チャージ】照合に成功」return flag
def is_element_present(self, how, what):
    try:
        self.driver.find_element(by=how, value=what)
    except NoSuchElementException as e:
        return False
    return True
def is_alert_present(self):
    try:
        self.driver.switch_to_alert()
    except NoAlertPresentException as e:
        return False
    return True

def close_alert_and_get_its_text(self):
    try:
        alert = self.driver.switch_to_alert()
        alert_text = alert.text
        if self.accept_next_alert:
            alert.accept()
        else:
            alert.dismiss()
        return alert_text
    finally:
        self.accept_next_alert = True

def tearDown(self):
     self.driver.quit()
     self.assertEqual([], self.verificationErrors)

名詞の解釈
Setup:いくつかのパラメータと情報を初期化し、テスト例の実行前に、この方法の関数が先に実行され、ここでブラウザの呼び出しとURLのアクセスを初期化関数のselfに置く.verificationErrors=[]:スクリプトの実行時にエラーメッセージがこのリストに印刷されます.accept_next_alert=True:次の警告を受け入れるかどうかimplicitly_wait(30)暗黙的待機:検索要素または要素がすぐに現れない場合、暗黙的待機は要素の再検索をしばらく待機し、デフォルトの時間は0 7である.暗黙的待機が設定されると、WebDriverオブジェクトインスタンス全体の宣言サイクルに存在し、暗黙的待機は通常の応答のアプリケーションのテストを遅くし、各要素を検索するの場合は待機します.これにより、テスト全体の実行時間が増加します.Test_quit:業務処理の方法、中で各種の業務ロジックを処理して、例えば、ページのデータを取得して、データベースのデータを取得して、それからgetdatabase:データベースをリンクしてデータベースのクエリーの結果cursorに戻ってコマンドを実行する方法:1.callproc(self,procname,args):ストレージ・プロシージャを実行するために使用され、受信したパラメータはストレージ・プロシージャ名とパラメータ・リストであり、戻り値は影響を受けるロー数である
  • execute(self,query,args):単一のsql文を実行し、受信パラメータはsql文自体と使用するパラメータリストであり、戻り値は影響を受ける行数3である.executemany(self,query,args):単一のsql文を実行しますが、パラメータリストのパラメータを繰り返し実行し、影響を受ける行数を返します.たとえば、executemanyメソッドを使用して大量の挿入データ
  • nextset(self):次の結果セットcursorに移動して戻り値を受信方法:1.fetchall(self):すべての戻り結果行を受信.  2.fetchmany(self,size=None):sizeバーから結果行を返す.sizeの値が返される結果行の数より大きい場合、cursorが返されます.Arraysizeバーのデータ
  • fetchone(self):結果行を返します.  4.scroll(self,value,mode='llative'):ポインタを行に移動します.mode='rlative'の場合、現在の行からvalueバーを移動することを表し、mode='absolute'の場合、結果セットの最初の行からvalueバーを移動することを表す.閉じるポインタオブジェクトと接続オブジェクトを別々にする必要がある.彼らには同じ名前の方法があるclose() conn.close() is_element_present:ページ要素が存在するかどうかを検索するために使用されますis_alert_present:alertが存在するか否かを判断し、弾枠異常に対する処理close_alert_and_get_its_text:警告ダイアログボックスを閉じ、テキストボックスの処理tearDown:このメソッドは各テストメソッドが実行された後に呼び出されます.ここではブラウザを終了するなどif name==「main」=「main」:この関数はjavaのmainメソッドに相当し、論理全体のエントリです.もしこの関数のすべての方法がすべてSqlを実行されないならば:もしいくつかのロジックがsqlの中で処理することができるならば、できるだけsqlの中で、このようにメンテナンスコードのコストを簡略化して、例えば:SELECT mon_money FROM money_account WHERE mon_Cusid='ff 808159 b 61 b 460159 b 63 be 68 e 0033'ここでのcusidはSELECT monを単独で維持する必要があるmoney FROM money_account m,sys_selfcustomer s where m.mon_cusid=s.cus_id and s.cus_number='ladAdmin'ここではユーザー名を維持するだけで、いずれにしても環境ユーザー名とパスワードを変更するたびに維持されます.これにより、メンテナンスが必要なパラメータ
  • が減少します.