将变量传递给Python中的函数

时间:2012-12-07 23:01:18

标签: python selenium nose

我在Python中编写测试脚本以进行Selenium Web测试。

如何通过Python函数传递参数以便在以后的函数中调用? 我首先有一个登录测试功能。 然后我有一个新的用户注册功能。我试图将我在注册函数中使用的用户名和密码传递给我在testLogin()函数内调用的testRegister()函数。

这是我的python代码:

userName = "admin"
password = "admin"

#pass username and password variables to this function
def testLogin(userName,password):
  browser = webdriver.Firefox()
  browser.get("http://url/login")

  element = browser.find_element_by_name("userName")
  element.send_keys(userName)

  element = browser.find_element_by_name("userPassword")
  element.send_keys(password)

  element.send_keys(Keys.RETURN)

  browser.close()

# test registration
def testRegister():
  browser = webdriver.Firefox()
  browser.get("http://url/register")

  #new username variable
  newUserName = "test"
  element = browser.find_element_by_name("regUser")
  element.send_keys(newUserName)

  #new password variable
  newUserPassword = "test"
  element = browser.find_element_by_name("regPassword")
  element.send_keys(newUserPassword)

  #
  #now test if user is registered, I want to call testLogin with the test user name and pw.
  testLogin(newUserName,newUserPassword)

  browser.close()

2 个答案:

答案 0 :(得分:0)

你有的任何值 - 无论你是将它们作为函数参数,还是通过调用函数接收它们,或者只是动态定义它们 - 你可以作为参数传递给任何其他函数。

因此,如果您想通过testRegister传递一些值以便与testLogin一起使用,请执行以下操作:

# test registration
def testRegister(userName, password):
  browser = webdriver.Firefox()
  browser.get("http://url/register")

  element = browser.find_element_by_name("regUser")
  element.send_keys(userName)

  element = browser.find_element_by_name("regPassword")
  element.send_keys(password)

你想要的更多吗?

答案 1 :(得分:0)

您可以创建一个新功能来运行所有测试。

def run_tests(username, password):
    testLogin(username,password)
    testRegister(username, password)

您需要修改testRegister,以便它接受用户名和密码参数。

然后你可以用run_tests('admin','letmein')

开始你的脚本