def test_results_page_renders(self): def app(environ, start_response): response = [show_variant(environ, 'exp').encode('ascii')] record_goal(environ, 'goal') start_response('200 OK', [('Content-Type', 'text/plain')]) return response s = Swab(self.datadir) s.add_experiment('exp', ['variant1', 'variant2'], 'goal') r = Agent(s.middleware(app)) r.get('/') assert 'A/B test results summary' in r.get('/swab/results').body assert 'variant1' in r.get('/swab/results').body
def test_javascript_response_not_cachable(self): def app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return [] s = Swab(self.datadir) s.add_experiment('exp', ['a', 'b'], 'goal') agent = Agent(s.middleware(app)) r = agent.get('/swab/r.js?e=exp') s.add_experiment('exp', ['a', 'b'], 'goal') assert r.response.get_header('Cache-Control') == 'no-cache'
def test_override_identity(self): def app(environ, start_response): show_variant(environ, 'exp') environ['swab.id'] = b'1234567890' start_response('200 OK', [('Content-Type', 'text/plain')]) return [] s = Swab(self.datadir) s.add_experiment('exp', 'yn') agent = Agent(s.middleware(app)) assert 'swab=1234567890;' in \ agent.get('/').response.get_header('Set-Cookie')
def test_show_variant_returns_requested_variant(self): def app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return [show_variant(environ, 'exp').encode('ascii')] s = Swab(self.datadir) s.add_experiment('exp', ['a', 'b'], 'goal') variants = set() for i in range(100): agent = Agent(s.middleware(app)) variants.add(agent.get('/?swab.exp=a').body) assert variants == set('a')
def test_show_variants_produces_all_variants(self): def app(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return [show_variant(environ, 'exp').encode('ascii')] s = Swab(self.datadir) s.add_experiment('exp', string.digits, 'goal') variants = set() for i in range(100): agent = Agent(s.middleware(app)) variants.add(agent.get('/').body) assert len(variants) == 10
def test_goals_without_trials_ignored(self): s = Swab(self.datadir) s.add_experiment('exp', ['variant1', 'variant2'], 'goal') env = make_env(s) record_goal(env, 'goal') r = Agent(s.middleware(None)) r = r.get('/swab/results') for row in r('table tr'): try: assert row('td')[0].text == '0' except IndexError: # Header row continue
def test_identity_set_and_preserved(self): def app(environ, start_response): show_variant(environ, 'exp', record=True) start_response('200 OK', [('Content-Type', 'text/plain')]) return [] s = Swab(self.datadir) s.add_experiment('exp', 'yn') agent = Agent(s.middleware(app)) r = agent.get('/') assert 'swab=' in r.response.get_header('Set-Cookie'), \ "Swab cookie not set on first request" r = r.get('/') assert 'swab=' not in r.response.get_header('Set-Cookie'), \ "Swab cookie reset on subsequent request"