Selenium - auf ungültige Eingabe testen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Aramis
User
Beiträge: 15
Registriert: Dienstag 29. Mai 2018, 09:41

Sonntag 22. Juli 2018, 09:57

Hallo zusammen,

ich teste einige Sachen in einer Django App mit Selenium. Bei dem Test auf ValidationError steh ich gerad auf dem Schlauch. Der Test läuft zwar durch, aber wenn ich über

Code: Alles auswählen

name.send_keys('test')
etwas eintrage läuft der Test genauso erfolgreich durch. Das darf ja so nicht sein.

ich möchte prüfen, dass die Fehlermeldung dem User angezeigt wird, also dass er in die angegebenen Fehler eine Eingabe vornehmen muss:

der Test:

Code: Alles auswählen

    def test_empty_input_isnot_allowed(self):
        self.browser.get(self.live_server_url)
        name = self.browser.find_element_by_id('id_name')
        name.send_keys('')
        self.browser.find_element_by_id('submit').click()
        message = self.browser.find_element_by_css_selector('input:invalid')
        self.assertTrue(message)



das ist die Form dazu:

Code: Alles auswählen

        def clean_name(self):
            name = self.cleaned_data('name')
            if len(name) < 2:
                raise forms.ValidationError("Names must have at least 2 chars ")
            else:
                return name

und in der View wird über is_valid() entsprechend geprüft:

Code: Alles auswählen

    def post(self, request):
        form = NetwrkForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('home')
        else:
            entries = NetwrkEntry.objects.all().order_by('-id')
            return render(
                request,
                'home.html',
                {'entries': entries, 'form': form}
            )


Hat jemand eine Idee, wo mein Fehler liegt?.
viele Grüße,
Aramis
Benutzeravatar
__blackjack__
User
Beiträge: 1083
Registriert: Samstag 2. Juni 2018, 10:21

Sonntag 22. Juli 2018, 13:25

@Aramis: Welchen Typ und Wert hat denn `message` in diesem Fall? Irgendwie glaube ich ja nicht, dass das vom Typ `bool`, also solltest Du sicherstellen, das der Test auf ”Wahrheit” an der Stelle auch tatsächlich so funktioniert wie Du das möchtest.
“Capitalism is the astounding belief that the most wickedest of men will do the most wickedest of things for the greatest good of everyone.” – John Maynard Keynes
Aramis
User
Beiträge: 15
Registriert: Dienstag 29. Mai 2018, 09:41

Sonntag 22. Juli 2018, 13:52

der Wert ist nicht bool, dass hab ich schon gesehen.

nur wie spreche ich die Meldung, an die erscheint, wenn der User das Feld frei lässt. Was ist das für ein Element? Eine richtige Fehlermeldung ist es doch nicht, oder?
Antworten