def create_nuban(): cust = get_random_string(10) requestId = get_time() faker = Faker() url = "{}/v2/api/vnubans/create_customer".format(base_url) payload = { "customer_reference": cust, "name": faker.name().split()[0] + " " + get_random_number(), "email": faker.email(), "mobile_number": "08123258600", "expires_on": str(datetime.date.today() + datetime.timedelta(days=1)), "callback_url": os.getenv("CALLBACK_URL"), "meta_data": { "somedatakey": "somedatavalue" }, "destination_nuban": "" } headers = { 'api_secret': api_key, 'requestId': str(requestId), 'Content-Type': 'application/json' } start_time = get_time() response = requests.request("POST", url, headers=headers, data=json.dumps(payload)) stop_time = get_time() return response.status_code, response.json(), start_time, stop_time
class StaffStateFactory(DjangoModelFactory): class Meta: model = UserState email = lazy_attribute(lambda x: faker.email()) staff = True is_admin = False
def prefill_users(clean=True, amount=1000): if clean: session.query(User).delete() for counter in range(amount): user = User(email=faker.email(), password=generate_password(), name=faker.name()) session.add(user) user = User(email="admin", password="******", name="Administrator") session.add(user) session.commit()
class UserFactory(DjangoModelFactory): class Meta: model = User username = lazy_attribute(lambda x: faker.user_name()) first_name = lazy_attribute(lambda x: faker.first_name()) last_name = lazy_attribute(lambda x: faker.last_name()) email = lazy_attribute(lambda x: faker.email()) password = lazy_attribute(lambda x: faker.password())
class StudentStateFactory(DjangoModelFactory): class Meta: model = UserState email = lazy_attribute(lambda x: faker.email()) staff = False is_admin = False year = lazy_attribute(lambda x: choice([c[0] for c in YEAR_CHOICES])) band = lazy_attribute(lambda x: choice([c[0] for c in BAND_CHOICES])) set = lazy_attribute(lambda x: choice([c[0] for c in SET_CHOICES]))
def test_create_patient(self): test_password = '******' username = faker.first_name() data = { 'username': username, 'email': faker.email(), 'password1': test_password, 'password2': test_password, 'is_doctor': False } response = self.client.post(self.url, data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Patient.objects.count(), 1)
def create(self): new_person = { 'name': faker.name(), 'email': faker.email(), 'birthday': faker.date() } person_response = self.client.post('/person', json=new_person, name="create person") if person_response.status_code != 200: raise FlowException(person_response.json()) person_id = person_response.json().get('id') self.created_persons.append(person_id)
def seed_authors(): content_type = ContentType.objects.get(app_label='articles', model='article') create_article_permission, created = Permission.objects.get_or_create( codename='can_create_articles', defaults={ 'name': 'Can create Articles', 'content_type': content_type }, ) update_article_permission, created = Permission.objects.get_or_create( codename='can_update_articles', defaults={ 'name': 'Can update Articles', 'content_type': content_type }, ) delete_article_permission, created = Permission.objects.get_or_create( codename='can_delete_articles', defaults={ 'name': 'Can delete Articles', 'content_type': content_type }, ) authors_group, created = Group.objects.get_or_create(name='authors') authors_group.permissions.add(create_article_permission) authors_group.permissions.add(update_article_permission) authors_group.permissions.add(delete_article_permission) authors_count = AppUser.objects.filter( groups__name__iexact='authors').count() authors_to_seed = 5 sys.stdout.write('[+] Seeding %d authors\n' % (authors_to_seed - authors_count)) for i in range(authors_count, authors_to_seed): username = faker.profile(fields='username')['username'] first_name = faker.first_name() last_name = faker.last_name() email = faker.email() password = '******' # create_user instead of create, to hash author = AppUser.objects.create_user(username=username, first_name=first_name, last_name=last_name, email=email, password=password) author.groups.add(authors_group)
def seed_users(): users_count = AppUser.objects.count() users_to_seed = 23 sys.stdout.write('[+] Seeding %d users\n' % (users_to_seed - users_count)) for i in range(users_count, users_to_seed): username = faker.profile(fields='username')['username'] first_name = faker.first_name() last_name = faker.last_name() email = faker.email() password = '******' # create_user instead of create, to hash AppUser.objects.create_user(username=username, first_name=first_name, last_name=last_name, email=email, password=password)
def test_create_doctor(self): """ Ensure we can create a new account object. """ test_password = '******' username = faker.first_name() data = { 'username': username, 'email': faker.email(), 'password1': test_password, 'password2': test_password, 'is_doctor': True } response = self.client.post(self.url, data, format='json') # import pudb; pudb.set_trace() self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(Doctor.objects.count(), 1)
# 创建会话对象,用来操作数据库 Session = sessionmaker(bind=engine) session = Session() # 创建一个faker工厂对象,用来产生虚假信息 # faker = faker.Factory.create() faker = faker.Faker() # 生成10个用户 faker_users = [User( # 使用 faker 生成一个人名 username=faker.name(), # 使用 faker 生成一个单词 password=faker.word(), # 使用 faker 生成一个邮箱 email=faker.email(), ) for i in range(10)] # add_all 一次性添加多个对象 session.add_all(faker_users) # 生成 5 个分类 faker_categories = [Category(name=faker.word()) for i in range(5)] session.add_all(faker_categories) # 生成20个标签 faker_tags = [Tag(name=faker.word()) for i in range(20)] session.add_all(faker_tags) # 生成 100 篇文章 for i in range(100): article = Article(
start_date = faker.date_between(start_date='-20y', end_date='now') delta = datetime.timedelta(days=365 * random.randint(18, 40)) # 18y-40y birth_date = start_date - delta return {'birth_date': birth_date, 'start_date': start_date} def salary_and_bonus(): salary = round(random.randint(90000, 120000) / 1000) * 1000 bonus_ratio = random.uniform(0.15, 0.2) bonus = (salary * bonus_ratio / 500) * 500 return {'salary': salary, 'bonus': bonus} data = dict() data['first_name_and_gender'] = first_name_and_gender data['last_name'] = lambda: {'last_name': faker.last_name()} data['email_address'] = lambda: {'email_address': faker.email()} data['ssn'] = lambda: {'ssn': faker.ssn()} data['birth_data_and_start_date'] = birth_date_and_start_date data['address'] = lambda: {'address': faker.address()} data['office'] = lambda: {'office': faker.city()} data['title'] = lambda: {'title': faker.job()} data['salary_and_bonus'] = salary_and_bonus # print([data[k]() for k in data.keys()]) for i in range(10): result = [list(data[k]().values()) for k in data.keys()] row = [item for sublist in result for item in sublist] print(row)
def run_more(): faker = Faker('zh-CN') driver = webdriver.Firefox() driver.set_page_load_timeout(60) segmentfaulturs = [ 'https://segmentfault.com/companies?page=' + str(i) for i in range(7) ] for segmentfaulturl in segmentfaulturls: driver.get(segmentfaulturl) time.sleep(2) html = driver.page_source dom_tree = etree.HTML(html) # 获取公司的链接 company_urls = dom_tree.xpath( '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/h4[@id="media-heading"]/a[1]/@href' ) # 获取公司的名称 company_names = dom_tree.xpath( '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/h4[@id="media-heading"]/a/text()' ) # 获取公司图片的url company_logos = dom_tree.xpath( '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="pull-left"]/div[@class="img-warp"]/a[@class="company-logo"]/@style' ) # 获取公司网站 company_websites = dom_tree.xpath( '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/a[@class="company-site"]/@href' ) # 获取公司一句话介绍 company_onewords = dom_tree.xpath( '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/p[@class="company-desc"]/text()' ) for company_name in company_names: print(company_name) for company_website in company_websites: print(company_website) for company_logo in company_logos: print(company_logo[company_log.rfind('(') + 1:company_logo.rfind(')') - 1]) for company_oneword in company_onewords: print(company_oneword) for company_url in company_urls: company_url = 'https://segmentfault.com' + company_url print(company_url) # 获取当前窗口句柄 now_handle = driver.current_window_handle i = 0 for company_url in company_urls: name = company_names[i] email = faker.email() password = '******' logo_img = company_logos[i][company_logos[i].rfind('(') + 1:company_logos[i].rfind(')') - 1] if User.query.filter_by(name=name).first(): # 如果企业存在就不存入数据库 i += 1 print('重复') continue # 把用户加入数据库 user = User(name=name, email=email, password=password, logo_img=logo_img, role=20) db.session.add(user) user = User.query.filter_by(name=name).first() oneword = faker.sentence(nb_words=25) print(name) print(logo_img) print(website) print(oneword) description = faker.sentence(nb_words=50) # 把公司信息加入数据库 company = Company(user=user, website=website, oneword=oneword, description=description) db.session.add(company) # 给公司家入职位信息 num = User.query.filter_by(name=name).first().id ran = random.randint(10, 100) for j in range(random.randint(10, 20)): job = Job(name=faker.job(), wage=str(ran) + 'K - ' + str(ran + 10) + 'K', location=faker.province(), company=Company.query.filter_by(user_id=num).first(), description=faker.sentence(nb_words=25), requirement=faker.sentence(nb_words=20)) db.session.add(job) i += 1 driver.close() # 向数据库提交 try: db.session.commit() except Exception as e: print(e) db.session.rollback()