ユース ケースを作成する前に、著者は自動テスト ケースを作成するためのいくつかの原則をもう一度強調します。
1. スクリプトは、ユーザーのログイン操作からユーザーがシステムを終了してブラウザを閉じるまでの完全なシーンです。
2. スクリプトは 1 つの関数ポイントのみを検証します。ユーザーがシステムにログインし、システムを終了した後にすべての関数を検証しようとしないでください。 3. 関数の順方向ロジックのみを検証してください。逆方向ロジックをあまり考慮しないでください
。検証と逆ロジック。多くの状況があります (たとえば、ハンド番号が間違って入力される状況がよくあります)。一方で、検証はより複雑で、大量のスクリプトを記述する必要があります。自動スクリプト自体は比較的脆弱であり、多くの異常なロジックの検証能力は強力ではありません。(通常のユーザー使用の原則に従ってスクリプトを作成するよう努めます)
4. スクリプト間に相関関係があってはなりません。つまり、作成された各スクリプトは独立しており、他のスクリプトに依存したり、他のスクリプトに影響を与えたりすることはできません。
5. データが変更されている場合は、データを復元する必要があります。
6. スクリプト全体の検証ポイントのみを検証し、スクリプト全体のすべてのステップを検証しないでください。
1. ログインの使用例:
著者は、Excel テーブルを使用して自動テスト ケースを作成することを推奨しています。
使用例 001:
コード例:
注: ログイン後にユーザーのニックネームを照合することで、ユーザーが正常にログインしたかどうかを判断します。
ユースケーススクリプト (login.py):
#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver = webdriver.Firefox()
driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F")
driver.maximize_window() #浏览器最大化
#登陆快播私有云
driver.find_element_by_id("user_name").send_keys("testing360")
driver.find_element_by_id("user_pwd").send_keys("198876")
driver.find_element_by_id("dl_an_submit").click()
time.sleep(3)
#获取用户名
now_user=driver.find_element_by_xpath("//div[@id='Nav']/ul/li[4]/a[1]/span").text
#用户名是否等于虫师,不等于将抛出异常
if now_user==u'虫师':
print '登陆成功'
else:
raise NameError('user name error!')
#退出
driver.find_element_by_class_name("Usertool").click()
time.sleep(2)
driver.find_element_by_link_text("退出").click()
time.sleep(2)
driver.close()
2. ファイルユースケースインスタンスを追加する
使用例 002:
注: ユーザー リスト内のファイルの数を数えることによって、ファイルが正常に追加されたかどうかを判断します。
用例脚本(collect.py):
注: ユース ケースのログインと終了は、ユース ケース 001 を参照します。このユース ケースは、コレクション ユーザーが共有するロジック コードのみに焦点を当てています。#現在のファイル数を判断する
inputs=driver.find_elements_by_tag_name('input')
n=0
for i in inputs:
if i.get_attribute('type')=="checkbox":
n=n+1
print u"当前列表文件为%d" %n
#收藏用户分享文件
driver.find_element_by_class_name("collect").click()
time.sleep(3)
#再次获取当前文件的个数
inputs=driver.find_elements_by_tag_name('input')
ns=0
for ii in inputs:
if ii.get_attribute('type')=="checkbox":
ns=ns+1
print u"当前列表文件为%d" %ns
#判断执行收藏文件之后比收藏之间文件加1 ,否则抛异常
if ns==n+1:
print "ok!"
else:
raise NameError('添加文件失败!!')
3. ファイル インスタンスを削除します。
使用例 003:
注: ファイルを削除するとファイルのデータが変更されるため、スクリプトを複数回実行すると、リスト内のすべてのファイルが削除された時点で例外がスローされるため、ファイルを削除した後、別のファイルを追加する必要があります。ただし、ファイルの追加操作については検証が行われません。
ユースケーススクリプト(del_one_file.py): #現在のファイル数を判断する
inputs=driver.find_elements_by_tag_name('input')
n=0
for i in inputs:
if i.get_attribute('type')=="checkbox":
n=n+1
print u"当前列表文件为%d" %n
#删除操作
driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[4]/table/tbody/tr/td/input").click()
driver.find_element_by_class_name("dele").click()
driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div").click()
time.sleep(4)
#再次获取当前文件的个数
inputs=driver.find_elements_by_tag_name('input')
ns=0
for ii in inputs:
if ii.get_attribute('type')=="checkbox":
ns=ns+1
print u"当前列表文件为%d" %ns
#判断执行删除单个文件之后比删除之后文件减1 ,否则抛异常
if ns==n-1:
print "ok!"
else:
raise NameError('删除文件失败!!')
#收藏用户分享单个文件
driver.find_element_by_class_name("collect").click()
time.sleep(3)
4. ファイル名の変更の使用例
使用例 004:
注: ファイルの名前を変更する場合、名前の変更が成功したことを証明する証拠 (検証ポイント) を見つけるのは実際には困難ですが、スクリプト全体がエラーなしで実行され、機能テストが OK であると漠然と判断することもできます。
用例脚本(renaming.py)
#名前変更されたファイルを確認します
driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[4]/table/tbody[5]/tr/td/input") .click ()
時間.睡眠(3)
#マウスを「その他」ボタンに移動すると、ドロップダウン ボックスが表示されます
element=driver.find_element_by_class_name("more-fe") #「詳細」ボタンを見つけます
ActionChains(driver).move_to_element(element).perform() #マウスを「詳細」ボタンに移動して、ドロップダウン ボックスをポップアップします
時間.睡眠(2)
#li タグ (詳細ドロップダウン ボックス) で data-action==rename (名前変更) オプションを選択し、 をクリックします。
lis=driver.find_elements_by_tag_name('li')
lis の li の場合:
if li.get_attribute('data-action') == 'rename':
li.click()
time.sleep(2)
input タグ内の type==text の名前変更された入力ボックスをフィルタリングします。
inputs=driver.find_elements_by_tag_name('input')
入力の入力用:
if input.get_attribute('type') == 'text':
input.send_keys(u"新しいファイル名") #重複した名前の操作を実行
input.send_keys( Keys.ENTER) #Enter を押して
time.sleep(2)の名前変更を確認します
概要:
この章では、手動テスト ユーザーと自動テスト ケースの違い、自動テスト ケースの作成原則、Python で例外をキャッチしてスローする方法、Webdriver が提供する get_screenshot_as_file() 関数、およびその作成方法を簡単に比較します。スクリプトなどを使用した自動テストケース
ただし、単一のテスト ケースを作成し、例外キャプチャを通じてテスト ケースが正常に実行されるかどうかを判断することはできますが、作成者はまだ自動テストの実装を急ぐ必要はありません。しかし、テスト フレームワークとの統合を通じてのみ、自動テスト テクノロジを効果的かつ実現可能に真に使用することができます。
最後に、私の記事を注意深く読んでくださった皆さんに感謝します。互恵性は常に必要です。それほど価値のあるものではありませんが、使用できる場合は、直接受け取ることができます。
この情報は、[ソフトウェア テスト] の友人にとって最も包括的かつ完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。また、皆さんのお役に立てれば幸いです。