assume() is a wrapper for the function with the same name in Maxima. You can find out about the syntax with the usual method of adding a ? after the function name:
sage: assume?
In this case, to indicate that the variable x is in ZZ, you need to type:
sage: assume(x, 'integer')
Unfortunately, Sage relies on two different backends for symbolic computations, Maxima and Pynac. Each of these uses a different method to indicate domains. We haven't reconciled these through the same interface yet. In order to indicate that a variable is real to Pynac, you can do:
sage: var('x', domain=RR)
At this moment, Pynac does not have different domains for ZZ or QQ. It only knows about RR, CC and NN.