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: 1453
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.

Code: Alles auswählen

    **** COMMODORE 64 BASIC V2 ****
 64K RAM SYSTEM  38911 BASIC BYTES FREE
   CYBERPUNX RETRO REPLAY 64KB - 3.8P
READY.
█
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