element ui input视图没刷新_[Selenium自动化测试实战] 如何在UI自动化测试中加入REST API的操作...
問(wèn)題
當(dāng)我們描述一個(gè)“好的自動(dòng)化測(cè)試用例”時(shí),經(jīng)常出現(xiàn)標(biāo)準(zhǔn)是:
- 精確。自動(dòng)化測(cè)試用例應(yīng)該測(cè)試一件事,只有一件事。與測(cè)試用例無(wú)關(guān)的應(yīng)用程序的某個(gè)部分中的錯(cuò)誤不應(yīng)導(dǎo)致測(cè)試用例失敗。
- 獨(dú)立。自動(dòng)化測(cè)試用例不應(yīng)該受測(cè)試套件中任何其他測(cè)試用例影響。
- 快速。這不需要太多的解釋。自動(dòng)化測(cè)試用例套件運(yùn)行得越快,它就越有用。
這些標(biāo)準(zhǔn)在Selenium測(cè)試套件中可能特別具有挑戰(zhàn)性。原因在于,Selenium的UI自動(dòng)化測(cè)試通常涉及可能包括注冊(cè),登錄,某些導(dǎo)航,表單提交或與網(wǎng)站的其他交互的設(shè)置。只有在做完這些事情之后,你才可以在網(wǎng)站的某些方面做出斷言。但是這樣就會(huì)引入一些和原本的測(cè)試用例無(wú)關(guān)的錯(cuò)誤導(dǎo)致自動(dòng)化腳本運(yùn)行失敗。解決方法
現(xiàn)在很多新的網(wǎng)站的后端都采用REST API。如果能夠在腳本中通過(guò)訪問(wèn)REST API來(lái)完成一些基礎(chǔ)的必要操作,而不是在UI上,這樣將提高我們測(cè)試的執(zhí)行效率。
REST API基于HTTP協(xié)議,這是基本上支持整個(gè)互聯(lián)網(wǎng)的協(xié)議。 幾乎所有現(xiàn)代編程語(yǔ)言都有可用于發(fā)出HTTP請(qǐng)求的庫(kù),因此,我們可以將調(diào)用REST API的支持添加到幾乎任何測(cè)試套件中。實(shí)例
很多測(cè)試中都會(huì)遇到新建賬號(hào)的問(wèn)題。需要測(cè)試新的賬號(hào)在登陸之后的行為。如果能夠使用REST API來(lái)新建用戶的話,就可以大大的節(jié)省填寫新建賬號(hào)的表單的時(shí)間。
這里假設(shè)一個(gè)虛擬的REST API
POST http://api.myfakeapp.com/v1/create-user
通過(guò)POST方法可以新建用戶。Body里面需要填充的JSON數(shù)據(jù)如下:
{
'username': 'example-username',
'password': 'abcd1234',
'email': 'bob@example.com',
'first_name': 'bob',
'last_name': 'example'
}
下面是代碼實(shí)現(xiàn)
require 'rest-client'
require 'json'
require 'securerandom'
class RestApiInterface
@headers = {
'content-type' => 'application/json',
'user-agent' => 'Rest Api Helper',
}
def post_to_api url, post_body_obj
json_body = JSON.generate(post_body_obj)
response = RestClient.post url, json_body, @headers
end
def create_test_user
# Step 1: Build the user parameters randomly
random_test_user = {
'username' => random_string,
'password' => random_string,
'email' => "#{random_string}@http://testing.com",
'first_name' => 'test',
'last_name' => 'user',
}
# Step 2: Execute the API call
response = post_to_api "http://api.myfakeapp.com/v1/create-user", random_test_user
# Step 3: Ensure the api call returned a success code
if response.code != '200'
raise 'User creation failed'
end
# Final Step: Return the user object so we can use it
response.body['user']['data']
end
def random_string
# This is an easy way to get a good randomized string
SecureRandom.hex
end
end
$driver = Selenium::WebDriver.for :firefox
user = RestApiInterface.new.create_test_user
$driver.get 'http://myfakeapp.com'
$driver.find_element(:css, 'input[name="username"]').send_keys @user['username']
$driver.find_element(:css, 'input[name="password"]').send_keys @user['password']
$driver.find_element(:css, 'button[name="login"]').click
puts $driver.find_element(:css, '#user_id').text總結(jié)
這里只是給出了一個(gè)如何把API訪問(wèn)和UI自動(dòng)化結(jié)合的思路。在這個(gè)思路的引導(dǎo)下,可以對(duì)UI自動(dòng)化測(cè)試進(jìn)行很多擴(kuò)展,例如校驗(yàn)界面數(shù)據(jù)元素的數(shù)據(jù)和API中數(shù)據(jù)的一致性等等。
軟件測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、面試經(jīng)驗(yàn)交流。感興趣可以加我們的軟件測(cè)試技術(shù)交流群,有不定期的發(fā)放免費(fèi)的資料鏈接,還有同行一起技術(shù)交流。
總結(jié)
以上是生活随笔為你收集整理的element ui input视图没刷新_[Selenium自动化测试实战] 如何在UI自动化测试中加入REST API的操作...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nmap地址段下的ip_安服福音——花式
- 下一篇: rust矿洞绳子怎么爬下_rust矿洞绳