我正在编写一个测试函数,用于查看自动完成字段是否包含数据库中的所有结果。
自动完成字段通过创建JSON项列表从数据库返回列表。
我想知道如何编写正确的正则表达式来查找我需要的所有项目。
tests.py:
from django.test import TestCase
import unittest
import re
import requests
class TestBuilds(unittest.TestCase):
def test_autoField_mobo(self):
'''
Test if all motherboards from database appear in autocomplete
'''
mobos_db = moboListing.objects.values_list('moboList', flat = True)
r = requests.get('localhost:8000/builds/autocomplete/ajax_lookup/moboListing?term=+')
# When user enters a space, request to server returns JSON format of motherboards at this url
num_mobos_db = len(mobos_db) # number of motherbaords in db
autocomplete = re.findall(r'u'value': u'(.*?)', str(r.json()) , re.DOTALL)
flag = False
error = """Check that all motherboards from DB really appears"""
for i in range(0, num_mobos_db):
if mobos_db[i] in autocomplete:
flag = True
else:
flag = False
self.assertTrue(flag, error)
我的问题是如何为JSON字符串编写正确的正则表达式,如下所示:
>>> str(r.json())
"[{u'pk': u'1', u'value': u' ASUS Motherboard '}, {u'pk': u'2', u'value': u' MSI Motherboard '}]"
我希望从u'value': u' '
收集所有主板名称,以便我可以检查它们是否与数据库匹配,或者是否有办法计算JSON项目的数量,我可以比较一下与我的数据库中的主板数量。