2013-06-24 2 views
2

Итак, я совершенно готов, когда дело доходит до такого рода вещей, и мне нужна помощь. Я работаю в программном обеспечении QA для электронной коммерции, и мы начали использовать Saucelabs для нашего автоматического тестирования. Я нахожусь в процессе изучения python, но на самом деле знаю практически ничего. Я могу построить достойный тест в Selenium IDE, экспортировать в Python/Selenium Webdriver и запустить тест. Не ошибка. Однако, как установить флаг pass/fail на интерфейсе? Один из наших разработчиков написал параллельный скрипт, поэтому я могу запускать большое количество тестов за один раз, но для этого мне нужно иметь возможность сразу увидеть, какие тесты прошли, а какие - сбой. Вы можете мне помочь? Благодаря!Настройка Pass/Fail с использованием Python для автоматического тестирования в Sauce Labs?

Также будут полезны любые обучающие материалы, которые вы знаете о Selenium Webdriver! На самом деле хочу узнать этот материал!

+1

я бы подумал, что следует стандартной процедуре большинство рамок тестирования: это пропуск, если нет исключений или вы * явно принудительно * он должен быть передан, и это сбой, если есть какие-то исключения, или вы * явно принудительно * его не удалось. – Arran

ответ

0

Вы можете использовать Sauce labs REST API, чтобы отметить ваш пробный пропуск/неудачный. Вы можете найти пример кода, заданного here

2

Я сделал это таким образом, сначала вам нужно импортировать некоторые вещи

# These next imports for reporting Test status to Sauce Labs 
import sys 
import httplib 
import base64 

try: 
    import json 
except ImportError: 
    import simplejson as json 

Тогда вам нужен этот конфиг

#Config to connect to SauceLabs REST API 
config = {"username": "yourusernamehere", 
      "access-key": "youraccesskeyhere"} 

Затем вы кладете свои тесты. В конце концов, перед вашим Teardown вам необходимо включить

# Curl call to SauceLabs API to report Job Result 
    def set_test_status(self, jobid, passed): 
     base64string = base64.encodestring('%s:%s' % (config['username'], config['access-key']))[:-1] 
     body_content = json.dumps({"passed": passed}) 
     connection = httplib.HTTPConnection("saucelabs.com") 
     connection.request('PUT', '/rest/v1/%s/jobs/%s' % (config['username'], jobid), 
         body_content, 
         headers={"Authorization": "Basic %s" % base64string}) 
     result = connection.getresponse() 
     return result.status == 200 

Затем в Teardown вам нужно включить какой-то если логики. Я сделал это так (и это работает)

def tearDown(self): 
    # sys.exc_info should be (None, None, None) if everything is OK, it fills with some values if something went wrong 
    # This if reports to Sauce Labs the outcome of the Test where True = Pass and False = Failed 
    if sys.exc_info() == (None, None, None): 
     self.set_test_status(self.driver.session_id, True) 
    else: 
     self.set_test_status(self.driver.session_id, False) 
    self.driver.quit() 
    self.assertEqual([], self.verificationErrors) 

Это сделал трюк для меня