如果我的脚本使用带有 Python 的 Selenium,我如何使用 BDD 在 testrail 中编写测试用例?
How can I use BDD for writing test cases in testrail if I used Selenium with Python for my scripts?
我正在尝试学习 Android 移动应用程序自动化的 BDD(行为),在 PyCharm 中使用 Selenium 和 Python 完成(所以不是纯粹的 Python;而且我一直不明白其中的区别,即使我试图找到有关的信息)。
我是初学者,所以我需要使用带有 Python 脚本的 Selenium 在 TestRail 中创建测试用例(这是我的目标)。
我听说过黄瓜配小黄瓜,但我很困惑。
我需要学习纯Python吗?我可以在 PyCharm 中编写测试用例吗?
谁能帮我一些建议?
从哪里开始?提前致谢。
PS:我有一些与文档的链接,但我仍然感到困惑:https://behave.readthedocs.io/
我会尝试为 webdriver 做类似这样的页面对象模式测试:
对于页面:
class LoginPage(BasePage):
def __init__(self, context):
BasePage.__init__(self,
context.browser,
)
self.context = context
self.base_url = URL.TWITTER
self.visit(url=self.base_url)
locator_dictionary = LoginLocators.__dict__
def login(self, username='', password=''):
self.username.send_keys(username)
self.password.send_keys(password)
self.submit_btn.click()
return TwitterTimeline(self.context)
和 base_page:
class BasePage(object):
"""
Really the only method used here is '__getattr__' now
"""
def __init__(self, browser, base_url='', **kwargs):
self.browser = browser
self.base_url = base_url
self.timeout = 10
@contextlib.contextmanager
def wait_for_page_load(self, timeout=10):
old_page = self.find_element_by_tage_name('html')
yield
WebDriverWait(self, timeout).until(staleness_of(old_page))
def find_element(self, *loc):
return self.browser.find_element(*loc)
def find_elements(self, *loc):
return self.browser.find_elements(*loc)
def visit(self, url='', route=''):
if not url:
url = self.base_url
self.browser.get(url + route)
def hover(self, element):
ActionChains(self.browser).move_to_element(element).perform()
# I don't like this but hover is sensitive and needs some sleep time
time.sleep(5)
def __getattr__(self, what):
try:
if what in self.locator_dictionary.keys():
try:
element = WebDriverWait(self.browser, self.timeout).until(
EC.presence_of_element_located(self.locator_dictionary[what])
)
except(TimeoutException, StaleElementReferenceException):
traceback.print_exc()
try:
element = WebDriverWait(self.browser, self.timeout).until(
EC.visibility_of_element_located(self.locator_dictionary[what])
)
except(TimeoutException, StaleElementReferenceException):
traceback.print_exc()
# I could have returned element, however because of lazy loading, I am seeking the element before return
return self.find_element(*self.locator_dictionary[what])
except AttributeError:
super(BasePage, self).__getattribute__("method_missing")(what)
def method_missing(self, what):
print "No %s here!" % what
整篇文章在这里:
http://blerdeyeview.com/testing-with-behave-framework/
这是另一个:
https://www.testrisk.com/2015/03/page-object-patter-for-selenium-test.html
我也是初学者,这对我很有帮助。我正在测试网站,而不是 Android,但它应该适合您的想法。
非常适合为 Gherkin
编写步骤
祝你好运!
P.S。我在每个子页面 class 上都使用了定位器字典,因为它运行良好。不幸的是,该方法没有自动完成功能,但我相信 Android 应用程序不需要字典。它应该像在这些链接中写的那样工作。
已编辑更多代码输入
我正在尝试学习 Android 移动应用程序自动化的 BDD(行为),在 PyCharm 中使用 Selenium 和 Python 完成(所以不是纯粹的 Python;而且我一直不明白其中的区别,即使我试图找到有关的信息)。 我是初学者,所以我需要使用带有 Python 脚本的 Selenium 在 TestRail 中创建测试用例(这是我的目标)。 我听说过黄瓜配小黄瓜,但我很困惑。 我需要学习纯Python吗?我可以在 PyCharm 中编写测试用例吗? 谁能帮我一些建议? 从哪里开始?提前致谢。
PS:我有一些与文档的链接,但我仍然感到困惑:https://behave.readthedocs.io/
我会尝试为 webdriver 做类似这样的页面对象模式测试:
对于页面:
class LoginPage(BasePage):
def __init__(self, context):
BasePage.__init__(self,
context.browser,
)
self.context = context
self.base_url = URL.TWITTER
self.visit(url=self.base_url)
locator_dictionary = LoginLocators.__dict__
def login(self, username='', password=''):
self.username.send_keys(username)
self.password.send_keys(password)
self.submit_btn.click()
return TwitterTimeline(self.context)
和 base_page:
class BasePage(object):
"""
Really the only method used here is '__getattr__' now
"""
def __init__(self, browser, base_url='', **kwargs):
self.browser = browser
self.base_url = base_url
self.timeout = 10
@contextlib.contextmanager
def wait_for_page_load(self, timeout=10):
old_page = self.find_element_by_tage_name('html')
yield
WebDriverWait(self, timeout).until(staleness_of(old_page))
def find_element(self, *loc):
return self.browser.find_element(*loc)
def find_elements(self, *loc):
return self.browser.find_elements(*loc)
def visit(self, url='', route=''):
if not url:
url = self.base_url
self.browser.get(url + route)
def hover(self, element):
ActionChains(self.browser).move_to_element(element).perform()
# I don't like this but hover is sensitive and needs some sleep time
time.sleep(5)
def __getattr__(self, what):
try:
if what in self.locator_dictionary.keys():
try:
element = WebDriverWait(self.browser, self.timeout).until(
EC.presence_of_element_located(self.locator_dictionary[what])
)
except(TimeoutException, StaleElementReferenceException):
traceback.print_exc()
try:
element = WebDriverWait(self.browser, self.timeout).until(
EC.visibility_of_element_located(self.locator_dictionary[what])
)
except(TimeoutException, StaleElementReferenceException):
traceback.print_exc()
# I could have returned element, however because of lazy loading, I am seeking the element before return
return self.find_element(*self.locator_dictionary[what])
except AttributeError:
super(BasePage, self).__getattribute__("method_missing")(what)
def method_missing(self, what):
print "No %s here!" % what
整篇文章在这里:
http://blerdeyeview.com/testing-with-behave-framework/
这是另一个:
https://www.testrisk.com/2015/03/page-object-patter-for-selenium-test.html
我也是初学者,这对我很有帮助。我正在测试网站,而不是 Android,但它应该适合您的想法。
非常适合为 Gherkin
编写步骤
祝你好运!
P.S。我在每个子页面 class 上都使用了定位器字典,因为它运行良好。不幸的是,该方法没有自动完成功能,但我相信 Android 应用程序不需要字典。它应该像在这些链接中写的那样工作。
已编辑更多代码输入