【问题标题】:Random data for test automation in pythonpython中测试自动化的随机数据
【发布时间】:2013-05-16 20:05:49
【问题描述】:

我正在使用 unittest 和 selenium 来自动化我的浏览器测试。

我将如何进行可以多次运行的测试,其中用户创建票证。票必须有一个标题名称,每次我运行测试时我都希望标题名称是随机的。

我想要格式:“测试票,1 | 测试票,2...”

【问题讨论】:

  • 您有什么问题? Ticket 1, Ticket 2, ... 创建起来很简单。
  • 您展示的示例似乎不是很随机。此外,这种格式是描述单个工单、以逗号分隔的工单列表、由管道分隔的工单列表,还是……什么?请不要含糊地描述预期的输出。
  • 一张票,每次我运行测试,它应该创建一张票。还包括其他步骤,但我只想介绍名称部分。我敢肯定它真的很简单,但我是菜鸟

标签: python selenium automation webdriver


【解决方案1】:

faker 已被弃用,您应该改用fake-factory

pip install fake-factory

使用方法和之前一样:

from faker import Factory
fake = Factory.create()

# OR
from faker import Faker
fake = Faker()

fake.name()
# 'Lucy Cechtelar'

或使用本地化数据(例如,生成意大利名称):

from faker import Factory
fake = Factory.create('it_IT')
for _ in range(0,10):
print fake.name()

> Elda Palumbo
> Pacifico Giordano
> Sig. Avide Guerra
> Yago Amato
> Eustachio Messina
> Dott. Violante Lombardo
> Sig. Alighieri Monti
> Costanzo Costa
> Nazzareno Barbieri
> Max Coppola

【讨论】:

    【解决方案2】:

    您可以在测试中定义以下函数:

    import random, string
    
    def random_word(self, length=6, chars=string.ascii_lowercase):
       return ''.join(random.choice(chars) for i in range(length))
    
    def random_id(self, size=6, chars=string.ascii_uppercase + string.digits):
        return ''.join(random.choice(chars) for _ in range(size))
    
    def random_number(self, length=3):
        return ''.join(random.choice(string.digits) for i in range(length))
    

    和类似的。

    另见:

    【讨论】:

      【解决方案3】:

      如果您只需要字符串 Test ticket,1 ... 它是:

      from random import randint
      randomString = "Test ticket, " + randint(min,max)
      

      如果你想生成随机字符串,你可以使用

      ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(max))
      

      您可能还想考虑防止字符串相等。 在这种情况下,您可以创建一个range(min,max) 并使用random.shuffle()

      【讨论】:

      • 谢谢,这正是我一直在寻找的,我想再补充一个问题。如何制作测试用例,多次运行?只是添加一个循环或其他东西?
      【解决方案4】:

      faker 模块提供了一些功能来填充几种不同类型的数据:

      import faker
      f = faker.Faker()
      
      In [11]: f.
      f.city            f.full_address    f.phonenumber     f.zip_code
      f.company         f.last_name       f.state
      f.email           f.lorem           f.street_address
      f.first_name      f.name            f.username
      
      In [11]: f.city()
      Out[11]: u'Treyview'
      

      .

      如果您要随机测试,我建议随机生成seed(并记录它),这样您就可以重新创建任何失败的测试。 您不想要的是失败但原因不明的测试(即,如果使用不同的随机值再次测试,则通过)。

      【讨论】:

      • 感谢您的建议,我不确定您的意思是随机生成种子,您能否提供一些代码供我查看:)。我猜当我拿到工单和 send_keys 时,这就是我需要生成器的地方?
      • @JacobHong 我想知道你真正想要的是Faker...
      • 这比我想要的要多,我现在正在研究文档,谢谢:)
      • @JacobHong 我想我只是想改变我的答案......令人讨厌的是它似乎没有提供种子功能......但是。
      • 我整理了一个 python 模块,它有更好的语言环境支持(使用 ruby​​ 的数据),但我没有把它放在奶酪店里:github.com/hayd/pyfaker
      猜你喜欢
      • 2019-07-08
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2020-12-31
      • 2015-03-04
      • 1970-01-01
      • 2014-04-22
      • 2011-06-22
      相关资源
      最近更新 更多